Soewono Effendi wrote: > Hi all, > > > I'm just curious if there is any particular reason to use the following code > > return !!*buf; > > instead of the simple > > return (int) *buf; >
This would be a trick to return 0 or 1. Take for example *buf equal to 3. !*buf -> !3 -> !(true) -> false -> 0 !!*buf -> !0 -> 1 return !!*buf returns 1, while return (int) *buf returns 3; > in function "uhci_hub_status_data", file: usb/host/uhci-hub.c > > static int uhci_hub_status_data(struct usb_hcd *hcd, char *buf) > { > struct uhci_hcd *uhci = hcd_to_uhci(hcd); > unsigned int io_addr = uhci->io_addr; > int i, len = 1; > > *buf = 0; > for (i = 0; i < uhci->rh_numports; i++) { > *buf |= ((inw(io_addr + USBPORTSC1 + i * 2) & 0xa) > 0 ? (1 << (i + >1)) : 0); > len = (i + 1) / 8 + 1; > } > > return !!*buf; > } > > > Little notes in code will be helpful. > > Best regards, > sE > -- Johann Deneux ------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel