--- John Baldwin <[EMAIL PROTECTED]> 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 
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to