rescheduling tasks using swi_add()

kamal kc kamal_ckk at yahoo.com
Wed Jan 11 08:37:50 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 a dummy kernel module and got some output, but i 
don't know if they were correct or not. i would like
to know
if i followed the right steps. here is the code i 
used ::


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;
}











__________________________________________________
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