On Fri, 13 Apr 2007, Danny Budik wrote:
> I had to recompile the kernel with the changes I made. In the patch
> that I sent yesterday, I forgot to include the changes that I made in
> the file
> /include/linux/usbdevice_fs.h. I added the constant for the ioctl call:
>
> #define USBDEVFS_GETFRAMENUM _IOW('U', 24, int)
>
> After making these changes, recompiling the 2.6.15 kernel, and making
> a quick and dirty test program, I get the following error before my
> program dies:
>
> opening card at path /dev/bus/usb/001/008
> opened card: 128
> errno: Inappropriate ioctl for device
>
> So it seems that by adding the ioctl to usbdevice_fs.h isn't enough.
> Is there a table somewhere else where I would need to define the
> ioctl so that it's recognized by the kernel?
No; what you did was sufficient. Most likely there is something wrong
with your user program.
> My changes that I've made are below:
Your email client mangled the patch. Here is a cleaned-up version. If
you like, I can submit it for inclusion in the kernel.
Alan Stern
Index: usb-2.6/drivers/usb/core/devio.c
===================================================================
--- usb-2.6.orig/drivers/usb/core/devio.c
+++ usb-2.6/drivers/usb/core/devio.c
@@ -831,6 +831,16 @@ static int proc_getdriver(struct dev_sta
return ret;
}
+static int proc_getframenum(struct dev_state *ps, void __user *arg)
+{
+ int frame_number;
+
+ frame_number = usb_get_current_frame_number(ps->dev);
+ if (put_user(frame_number, (int __user *)arg))
+ return -EFAULT;
+ return 0;
+}
+
static int proc_connectinfo(struct dev_state *ps, void __user *arg)
{
struct usbdevfs_connectinfo ci;
@@ -1567,6 +1577,12 @@ static int usbdev_ioctl(struct inode *in
snoop(&dev->dev, "%s: IOCTL\n", __FUNCTION__);
ret = proc_ioctl_default(ps, p);
break;
+
+ case USBDEVFS_GETFRAMENUM:
+ snoop(&dev->dev, "%s: GETFRAMENUM\n", __FUNCTION__);
+ ret = proc_getframenum(ps, p);
+ break;
+
}
usb_unlock_device(dev);
if (ret >= 0)
Index: usb-2.6/include/linux/usbdevice_fs.h
===================================================================
--- usb-2.6.orig/include/linux/usbdevice_fs.h
+++ usb-2.6/include/linux/usbdevice_fs.h
@@ -173,4 +173,5 @@ struct usbdevfs_ioctl32 {
#define USBDEVFS_CLEAR_HALT _IOR('U', 21, unsigned int)
#define USBDEVFS_DISCONNECT _IO('U', 22)
#define USBDEVFS_CONNECT _IO('U', 23)
+#define USBDEVFS_GETFRAMENUM _IOW('U', 24, int)
#endif /* _LINUX_USBDEVICE_FS_H */
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel