Date: Tue, 24 May 2005 22:52:19 +0200 From: Dirk GOUDERS <gouders@et.bocholt.fh-ge.de> To: freebsd-usb@freebsd.org Subject: Re: poll(2)ing or select(2)ing /dev/usb0 Message-ID: <200505242052.j4OKqJiI001602@karga.hank.home> In-Reply-To: Message from Hans Petter Selasky <hselasky@c2i.net> of "Tue, 24 May 2005 21:22:52 %2B0200." <200505242122.53801.hselasky@c2i.net>
next in thread | previous in thread | raw e-mail | index | archive | help
> You cannot read data from /dev/usbN, only ioctls are possible on those > devices. > > See "/sys/dev/usb/usb.c" (usbpoll), if you got the source code installed. Ah yes, thank you, now I understand why my programs behave like they do. To me, it looks as if the manual page usb(4) is a little bit misleading: <excerpt> USB CONTROLLER INTERFACE Use the following to get access to the USB specific structures and defines. The /dev/usbN can be opened and a few operations can be performed on it. The poll(2) system call will say that I/O is possible on the controller device when a USB device has been connected or disconnected to the bus. The following ioctl(2) commands are supported on the controller device: </excerpt> I understood the text in the following way: "If you want to know if a device has been connected/disconnected, then call poll(2) on /dev/usbN and if poll(2) says that descriptors are ready, perform one of the ioctl(2) command to find out what exactly happened." Well, do I understand it right, that the only way to use poll(2) to come to know if a device has been connected/disconnected to/from the bus is to poll(2) /dev/usb (the event interface)? And therefore on a machine that runs usbd(8), no other process can use poll(2), to come to know about such events, but has to do it somehow else? Dirk
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200505242052.j4OKqJiI001602>