Date: Sun, 21 Oct 2007 01:31:42 +0530 From: "GAURAV GUPTA" <emdgaurav@gmail.com> To: "Hans Petter Selasky" <hselasky@c2i.net> Cc: freebsd-usb@freebsd.org Subject: Re: need help Message-ID: <dc2adf190710201301r607c9afcv919bfdf3445c9863@mail.gmail.com> In-Reply-To: <200710201927.51983.hselasky@c2i.net> References: <dc2adf190710201022r102643fg1a3d4360ab84bc7d@mail.gmail.com> <200710201927.51983.hselasky@c2i.net>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi Petter, Thanks for replying. i am not able to understand ATTATCH function call usb_task itself . how internally this function work in stack and why we need it. I have seen function definition below in USB stack . *struct* usb_task { TAILQ_ENTRY <http://opengrok.creo.hu/openbsd/s?defs=TAILQ_ENTRY>( usb_task<http://opengrok.creo.hu/openbsd/xref/src/sys/dev/usb/usbdi.h#usb_task>) next ; *void* (*fun)(*void* *); *void* * arg; *char* onqueue; }; *void* usb_add_task<http://opengrok.creo.hu/openbsd/s?defs=usb_add_task> ( usbd_device_handle<http://opengrok.creo.hu/openbsd/xref/src/sys/dev/usb/usbdi.h#usbd_device_handle> dev <http://opengrok.creo.hu/openbsd/s?defs=dev>, *struct* usb_task<http://opengrok.creo.hu/openbsd/xref/src/sys/dev/usb/usbdi.h#usb_task>*task<http://opengrok.creo.hu/openbsd/s?defs=task> ); *void* usb_rem_task<http://opengrok.creo.hu/openbsd/s?defs=usb_rem_task> ( usbd_device_handle<http://opengrok.creo.hu/openbsd/xref/src/sys/dev/usb/usbdi.h#usbd_device_handle> dev <http://opengrok.creo.hu/openbsd/s?defs=dev>, *struct* usb_task<http://opengrok.creo.hu/openbsd/xref/src/sys/dev/usb/usbdi.h#usb_task>*task<http://opengrok.creo.hu/openbsd/s?defs=task> ); #*define* usb_init_task(t, f, a) ((t)-> fun<http://opengrok.creo.hu/openbsd/xref/src/sys/dev/usb/usbdi.h#fun>= (f), (t)-> arg <http://opengrok.creo.hu/openbsd/xref/src/sys/dev/usb/usbdi.h#arg> = (a), (t)->onqueue <http://opengrok.creo.hu/openbsd/xref/src/sys/dev/usb/usbdi.h#onqueue>= 0) I am looking in code of driver if_axe.c (Dlink lan to usb ) not able to understand function call *usb_init_task(&sc->axe_tick_task, axe_tick_task, sc);* I understand this question look very basic or silly ,but i am really looking for your input .. we are in college and just started to understand to BSD . Thanks, Gaurav On 10/20/07, Hans Petter Selasky <hselasky@c2i.net> wrote: > > On Saturday 20 October 2007, GAURAV GUPTA wrote: > > Hi all, > > > > Can anyone explain me the functionality of this standard function. > > I am beginner in this BSD area,so cudn'n get the details clear. > > > > #define usb_init_task(t, f, a) ((t)->fun = (f), (t)->arg = (a), > > (t)->onqueue = 0) > > > > The macro initialises a task structure. > > --HPS >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?dc2adf190710201301r607c9afcv919bfdf3445c9863>