On Thu, 3 Aug 2006, Luiz Fernando N. Capitulino wrote: > We could do this instead (not compiled!): > > static inline int __usb_endpoint_is_in(struct usb_endpoint_descriptor *epd) > { > return ((epd->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN); > } > > static inline int __usb_endpoint_is_bulk(struct usb_endpoint_descriptor *epd) > { > return ((epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == > USB_ENDPOINT_XFER_BULK); > } > > static inline int usb_endpoint_is_bulk_in(struct usb_endpoint_descriptor *epd) > { > return (__usb_endpoint_is_bulk(epd) && __usb_endpoint_is_in(epd)); > } > > But then we'll have to add: > > __usb_endpoint_is_in() > __usb_endpoint_is_out() > __usb_endpoint_is_bulk() > __usb_endpoint_is_int() > usb_endpoint_is_bulk_in() > usb_endpoint_is_bulk_out() > usb_endpoint_is_int_in() > usb_endpoint_is_int_out() > > Which is flexible, is still good, but looks too much macros to me.
I think this is a good idea. Except for one thing: the usb_endpoint_is_{bulk/int}_{in/out} macros are approaching the size where inline code is more expensive than out-of-line function calls. You might want to consider making those four into exported subroutines instead of macros. Maybe check the object code to see which approach would be smaller. Alan Stern ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys -- and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel