It seems the Linux kernel getting another ABI change for USB in 2.6.36. function
ioctl
is being deprecated for a while and now being removed. It is changed with function
unlocked_ioctl
. The parameter also changed.
Here’s the chunk of changes that would gives you idea of what changed:
<2.6.36 | 2.6.36+ |
---|---|
ioctl = usbdpfp_ioctl |
.unlocked_ioctl = usbdpfp_ioctl |
usbdpfp_ioctl(struct inode *inode, struct file *file, unsigned int cmd, | usbdpfp_ioctl(struct file *file, unsigned int cmd, |
static int usbdpfp_ioctl( | static long usbdpfp_ioctl( |
That’s not all of the code, but you get the idea. The
ioctl
is changed. Every
ioctl
calling is having one less parameter. The return is no longer
int
but
long
.
According to Alex comment in my previous post, the UDEV rule also changing. Every USB device is default installed in /dev/usb directory. That’s why we have to make an adjustment in udev rule. As usual, I’m uploading the whole code here. As usual, remove the .pdf extension.