rescheduling tasks using swi_add()
kamal kc
kamal_ckk at yahoo.com
Wed Jan 11 08:46:00 PST 2006
--- John Baldwin <jhb at freebsd.org> wrote:
> > the man page discussed the swi_add() and
> swi_sched()
> > functions.
> >
> > what i don't understand is, how do i register my
> > handler
> > function ??
> > if i use the swi_add() for that purpose what
> > do i use for the void *arg argument.
> >
> > and how can i dispatch control to the software
> > interrupt handler ??
> > the swi_sched() uses only the cookie and the flags
> > arguments.
> > there is no way i can pass arguments to my handler
> > function ..
> >
> > i guess most of you are familiar with this and can
> > help me
> > out ......
>
> Queue a task to a taskqueue. Behind the scenes that
> will invoke a swi_add if
> you use the taskqueue_swi queue. However, given
> that you want to do some
> rather complicated work, you'd be better off
> creating a dedicated taskqueue
> thread and queueing tasks off to it I think.
>
thanks for the suggestion on the taskqueue. i tried it
on my dummy kernel module and got some output but i
am not sure if i followed the correct steps to
use the taskqueue. the only thing i found
was the man pages and the taskqueue.h.
here is the code:
-----------------------
struct taskqueue_arguments
{ int a;
int b;
};
void taskqueue_function(void *,int);
typedef void taskqueue_function_t(void *,int);
/* taskqueue function */
void taskqueue_function(void *arguments,int int_arg)
{
struct taskqueue_arguments *arg;
arg=(struct taskqueue_arguments *)arguments;
printf("\ntakqueue_function was called the args
are %d %d",arg->a,arg->b);
return;
}
/* function implementing the syscall */
static int
hello(struct thread *td, void *arg)
{ .........
struct task mytask;
taskqueue_function_t *taskqueue_function_ptr;
taskqueue_function_ptr=taskqueue_function;
struct taskqueue_arguments arg_var;
arg_var.a=10;
arg_var.b=20;
TASK_INIT(&mytask,50,taskqueue_function_ptr,&arg_var);
taskqueue_enqueue(taskqueue_swi, &mytask);
...........
}
did i do it correctly ???
thanks,
kamal
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
More information about the freebsd-hackers
mailing list