kqueue for usb_dev

John-Mark Gurney jmg at funkthat.com
Thu Feb 27 06:02:34 UTC 2014


Kohji Okuno wrote this message on Thu, Feb 27, 2014 at 14:26 +0900:
> I tried add kqueue I/F to usb_dev.c. I attached my patch.
> What do you think about my patch?

A few comments...

1) You should just drop the use of flag_iskevent and just
unconditionally call KNOTE... since you have the lock already held,
the cost is minimal (and w/ modern branch prediction, may be cheaper)...

2) Why do you try to start read/write transfers in the _filter?  You
should just check to see if data is available and not do work..  This
is also important since kqueue calls the filter just before delivering
the knote to userland to verify that there is still data, and it will
call your _event function for each knote on the fd...  The work should
be started through other mechanisms, like read/write syscall or
interrupt or timeout/callout...  If it's required to get results from
USB_IF_POLL, then it's fine..

3) I don't see any calls to knlist_destroy... These calls are needed
to clean up the knlist...

Obviously the #if 1's will need to go...

Also, I don't think your change is against HEAD..  The line numbers
in my version of usb_dev.c are different...

-- 
  John-Mark Gurney				Voice: +1 415 225 5579

     "All that I will do, has been done, All that I have, has not."


More information about the freebsd-current mailing list