Input: uinput - add UI_GET_VERSION ioctl
authorDavid Herrmann <dh.herrmann@gmail.com>
Mon, 21 Jul 2014 00:27:09 +0000 (17:27 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Mon, 21 Jul 2014 21:30:42 +0000 (14:30 -0700)
This ioctl is the counterpart to EVIOCGVERSION and returns the
uinput-version the kernel was compiled with.

Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/misc/uinput.c
include/uapi/linux/uinput.h

index 883f045..421e29e 100644 (file)
@@ -723,6 +723,12 @@ static long uinput_ioctl_handler(struct file *file, unsigned int cmd,
        }
 
        switch (cmd) {
+               case UI_GET_VERSION:
+                       if (put_user(UINPUT_VERSION,
+                                    (unsigned int __user *)p))
+                               retval = -EFAULT;
+                       goto out;
+
                case UI_DEV_CREATE:
                        retval = uinput_create_device(udev);
                        goto out;
index 0389b48..baeab83 100644 (file)
@@ -84,6 +84,15 @@ struct uinput_ff_erase {
  */
 #define UI_GET_SYSNAME(len)    _IOC(_IOC_READ, UINPUT_IOCTL_BASE, 300, len)
 
+/**
+ * UI_GET_VERSION - Return version of uinput protocol
+ *
+ * This writes uinput protocol version implemented by the kernel into
+ * the integer pointed to by the ioctl argument. The protocol version
+ * is hard-coded in the kernel and is independent of the uinput device.
+ */
+#define UI_GET_VERSION         _IOR(UINPUT_IOCTL_BASE, 301, unsigned int)
+
 /*
  * To write a force-feedback-capable driver, the upload_effect
  * and erase_effect callbacks in input_dev must be implemented.