Re: [Linux-usb-users] Re: USB API, ioctl's and libusb
On Wed, 26 Jan 2005, DervishD wrote: > That's irrelevant, the program I was trying to fix uses libusb. > My question is about the preferred kernel interface, 'cause I don't > know if it's the ioctl one or the URB one (well, I'm calling 'URB' > interface the API that is implemented using URB's inside the kernel). > > BTW, and judging from the program I've read, there are lots of > operations that must be done using 'usb_control_msg', and libusb > implements that function with exactly the same interface as the > kernel. The only difference is that libusb uses ioctl and the kernel > implements the function using URB's. IMHO libusb doesn't provide a > cleaner API, the only advantage of libusb is portability. Anyway, > I've not used it enough to judge, I'm more concerned about kernel USB > interface, not libusb one. You don't seem to understand the difference between a kernel API and a user API. Only code that is part of the kernel can use a kernel API, so only kernel drivers can use the "URB" interface. By contrast, a user API can be used by regular programs, not part of the kernel. libusb provides a user API. So there's really no choice. Unless you're writing a kernel module, your program can't use URBs. You can use libusb, or if you don't care about portability you can use ioctl calls directly. But you can't use URBs. Alan Stern - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [Linux-usb-users] Re: USB API, ioctl's and libusb
Hi Alan :) * Alan Stern <[EMAIL PROTECTED]> dixit: > > BTW, and judging from the program I've read, there are lots of > > operations that must be done using 'usb_control_msg', and libusb > > implements that function with exactly the same interface as the > > kernel. The only difference is that libusb uses ioctl and the kernel > > implements the function using URB's. IMHO libusb doesn't provide a > > cleaner API, the only advantage of libusb is portability. Anyway, > > I've not used it enough to judge, I'm more concerned about kernel USB > > interface, not libusb one. > You don't seem to understand the difference between a kernel API and a > user API. Only code that is part of the kernel can use a kernel API, so > only kernel drivers can use the "URB" interface. By contrast, a user API > can be used by regular programs, not part of the kernel. libusb provides > a user API. I thought that provided a user API, not a kernel one. In fact I thought that the functions provided throught that header were syscalls. They are not, I've checked ;) > So there's really no choice. Unless you're writing a kernel module, your > program can't use URBs. You can use libusb, or if you don't care about > portability you can use ioctl calls directly. But you can't use URBs. OK, that's right. I really thought that there were syscalls providing USB API for user space programs. That sounded less weird when I first thought of it ;)) Thanks for the help :))) Raúl Núñez de Arenas Coronado -- Linux Registered User 88736 http://www.dervishd.net & http://www.pleyades.net/ It's my PC and I'll cry if I want to... - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [Linux-usb-users] Re: USB API, ioctl's and libusb
Hi Alan :) * Alan Stern [EMAIL PROTECTED] dixit: BTW, and judging from the program I've read, there are lots of operations that must be done using 'usb_control_msg', and libusb implements that function with exactly the same interface as the kernel. The only difference is that libusb uses ioctl and the kernel implements the function using URB's. IMHO libusb doesn't provide a cleaner API, the only advantage of libusb is portability. Anyway, I've not used it enough to judge, I'm more concerned about kernel USB interface, not libusb one. You don't seem to understand the difference between a kernel API and a user API. Only code that is part of the kernel can use a kernel API, so only kernel drivers can use the URB interface. By contrast, a user API can be used by regular programs, not part of the kernel. libusb provides a user API. I thought that linux/usb.h provided a user API, not a kernel one. In fact I thought that the functions provided throught that header were syscalls. They are not, I've checked ;) So there's really no choice. Unless you're writing a kernel module, your program can't use URBs. You can use libusb, or if you don't care about portability you can use ioctl calls directly. But you can't use URBs. OK, that's right. I really thought that there were syscalls providing USB API for user space programs. That sounded less weird when I first thought of it ;)) Thanks for the help :))) Raúl Núñez de Arenas Coronado -- Linux Registered User 88736 http://www.dervishd.net http://www.pleyades.net/ It's my PC and I'll cry if I want to... - To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [Linux-usb-users] Re: USB API, ioctl's and libusb
On Wed, 26 Jan 2005, DervishD wrote: That's irrelevant, the program I was trying to fix uses libusb. My question is about the preferred kernel interface, 'cause I don't know if it's the ioctl one or the URB one (well, I'm calling 'URB' interface the API that is implemented using URB's inside the kernel). BTW, and judging from the program I've read, there are lots of operations that must be done using 'usb_control_msg', and libusb implements that function with exactly the same interface as the kernel. The only difference is that libusb uses ioctl and the kernel implements the function using URB's. IMHO libusb doesn't provide a cleaner API, the only advantage of libusb is portability. Anyway, I've not used it enough to judge, I'm more concerned about kernel USB interface, not libusb one. You don't seem to understand the difference between a kernel API and a user API. Only code that is part of the kernel can use a kernel API, so only kernel drivers can use the URB interface. By contrast, a user API can be used by regular programs, not part of the kernel. libusb provides a user API. So there's really no choice. Unless you're writing a kernel module, your program can't use URBs. You can use libusb, or if you don't care about portability you can use ioctl calls directly. But you can't use URBs. Alan Stern - To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/