Re: [patch] add input_enable_device()

From: Stas Sergeev
Date: Tue May 16 2006 - 11:59:52 EST


Hello.

Andrew Morton wrote:
Separate functions input_enable_device(struct input_handle *handle) and
input_disable_device(struct input_handle *handle) would be preferred.
Right, and here it goes.

---
add input_enable_device() and input_disable_device()

Signed-off-by: Stas Sergeev <stsp@xxxxxxxx>
CC: Dmitry Torokhov <dtor_core@xxxxxxxxxxxxx>
CC: Vojtech Pavlik <vojtech@xxxxxxx>


--- a/include/linux/input.h 2006-04-05 17:10:01.000000000 +0400
+++ b/include/linux/input.h 2006-04-05 17:36:49.000000000 +0400
@@ -878,7 +878,7 @@

struct pt_regs *regs;
int state;
-
+ int disabled;
int sync;

int abs[ABS_MAX + 1];
@@ -1038,6 +1038,9 @@
int input_open_device(struct input_handle *);
void input_close_device(struct input_handle *);

+void input_enable_device(struct input_handle *handle);
+void input_disable_device(struct input_handle *handle);
+
int input_accept_process(struct input_handle *handle, struct file *file);
int input_flush_device(struct input_handle* handle, struct file* file);

--- a/drivers/input/input.c 2006-01-12 11:23:09.000000000 +0300
+++ b/drivers/input/input.c 2006-04-05 17:51:27.000000000 +0400
@@ -37,6 +37,8 @@
EXPORT_SYMBOL(input_release_device);
EXPORT_SYMBOL(input_open_device);
EXPORT_SYMBOL(input_close_device);
+EXPORT_SYMBOL(input_enable_device);
+EXPORT_SYMBOL(input_disable_device);
EXPORT_SYMBOL(input_accept_process);
EXPORT_SYMBOL(input_flush_device);
EXPORT_SYMBOL(input_event);
@@ -53,7 +55,7 @@
{
struct input_handle *handle;

- if (type > EV_MAX || !test_bit(type, dev->evbit))
+ if (type > EV_MAX || !test_bit(type, dev->evbit) || dev->disabled)
return;

add_input_randomness(type, code, value);
@@ -269,6 +271,16 @@
mutex_unlock(&dev->mutex);
}

+void input_enable_device(struct input_handle *handle)
+{
+ handle->dev->disabled = 0;
+}
+
+void input_disable_device(struct input_handle *handle)
+{
+ handle->dev->disabled = 1;
+}
+
static void input_link_handle(struct input_handle *handle)
{
list_add_tail(&handle->d_node, &handle->dev->h_list);