From: Johannes E. <joh...@er...> - 2002-10-23 23:17:23
|
On Wed, Oct 23, 2002, Bhanu Nagendra P. <bpi...@cs...> wrote: > I have a Xilinx XSV board with a basic core on it which provides a bulk > endpoint. I am using libusb to get a handle to the deivce and send bulk > messages to it, which all works fine. > > I am interested in understanding the working of libusb. When I tried > handtracing the call to usb_bulk_write() in program, I figured out that it > boils down > to a call in linux.c, which reads: > ret=ioctl(dev->fd, IOCTL_USB_BULK,&bulk); > > fd is a file descriptor which points to the file /proc/bus/usb/001/002- > which corresponds to my XSV board. > > Given that my board has no custom driver associated with it, I am > unable to > fgiure out as to where the above ioctl is being implemented. I tried > doing a search on IOCTL_USB_BULK in the source for for the libusb and > kernel but did not find any occurences of implementation. drivers/usb/devio.c We use a different name in libusb than the kernel uses. > The other related question I had is that there are no device numbers > associated with that device: > ls -l /proc/bus/usb/001/002 > does not list 002 as any special type of file (as opposed to character > or block devices). > > With this being the case, how is the kernel able to recognize this as a > usb device file and treat it accordingly -i.e- associate a 'special' > driver for it? /proc/bus/usb is a virtual filesystem called usbdevfs (usbfs under newer kernels). That's why they don't show up as device nodes. They are just virtual files. JE |