On Thu, 22 Apr 2010 18:08:57 -0700 Arve Hjønnevåg wrote: > Add an ioctl, EVIOCSSUSPENDBLOCK, to enable a suspend_blocker that will block > suspend while the event queue is not empty. This allows userspace code to > process input events while the device appears to be asleep. All new ioctls need to be added to Documentation/ioctl/ioctl-number.txt, please. > Signed-off-by: Arve Hjønnevåg <arve@xxxxxxxxxxx> > --- > drivers/input/evdev.c | 22 ++++++++++++++++++++++ > include/linux/input.h | 3 +++ > 2 files changed, 25 insertions(+), 0 deletions(-) > > diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c > index 2ee6c7a..66e0d16 100644 > --- a/drivers/input/evdev.c > +++ b/drivers/input/evdev.c > @@ -585,6 +594,19 @@ static long evdev_do_ioctl(struct file *file, unsigned int cmd, > else > return evdev_ungrab(evdev, client); > > + case EVIOCGSUSPENDBLOCK: > + return put_user(client->use_suspend_blocker, ip); > + > + case EVIOCSSUSPENDBLOCK: > + spin_lock_irq(&client->buffer_lock); > + if (!client->use_suspend_blocker && p) > + suspend_blocker_init(&client->suspend_blocker, "evdev"); > + else if (client->use_suspend_blocker && !p) > + suspend_blocker_destroy(&client->suspend_blocker); > + client->use_suspend_blocker = !!p; > + spin_unlock_irq(&client->buffer_lock); > + return 0; > + > default: > > if (_IOC_TYPE(cmd) != 'E') > diff --git a/include/linux/input.h b/include/linux/input.h > index 7ed2251..b2d93b4 100644 > --- a/include/linux/input.h > +++ b/include/linux/input.h > @@ -82,6 +82,9 @@ struct input_absinfo { > > #define EVIOCGRAB _IOW('E', 0x90, int) /* Grab/Release device */ > > +#define EVIOCGSUSPENDBLOCK _IOR('E', 0x91, int) /* get suspend block enable */ > +#define EVIOCSSUSPENDBLOCK _IOW('E', 0x91, int) /* set suspend block enable */ > + > /* > * Event types > */ > -- thanks, --- ~Randy *** Remember to use Documentation/SubmitChecklist when testing your code *** _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm