Hi Dmitry, On Wed, Jul 03, 2024 at 02:37:50PM -0700, Dmitry Torokhov wrote: > In preparation to consolidating filtering and event processing in the > input core change events() method to return number of events processed > by it. > > Signed-off-by: Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx> Reviewed-by: Jeff LaBundy <jeff@xxxxxxxxxxx> > --- > drivers/input/evdev.c | 6 ++++-- > include/linux/input.h | 7 ++++--- > 2 files changed, 8 insertions(+), 5 deletions(-) > > diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c > index 05abcd45b5d4..a8ce3d140722 100644 > --- a/drivers/input/evdev.c > +++ b/drivers/input/evdev.c > @@ -288,8 +288,8 @@ static void evdev_pass_values(struct evdev_client *client, > /* > * Pass incoming events to all connected clients. > */ > -static void evdev_events(struct input_handle *handle, > - const struct input_value *vals, unsigned int count) > +static unsigned int evdev_events(struct input_handle *handle, > + struct input_value *vals, unsigned int count) > { > struct evdev *evdev = handle->private; > struct evdev_client *client; > @@ -306,6 +306,8 @@ static void evdev_events(struct input_handle *handle, > evdev_pass_values(client, vals, count, ev_time); > > rcu_read_unlock(); > + > + return count; > } > > static int evdev_fasync(int fd, struct file *file, int on) > diff --git a/include/linux/input.h b/include/linux/input.h > index c22ac465254b..89a0be6ee0e2 100644 > --- a/include/linux/input.h > +++ b/include/linux/input.h > @@ -275,7 +275,8 @@ struct input_handle; > * it may not sleep > * @events: event sequence handler. This method is being called by > * input core with interrupts disabled and dev->event_lock > - * spinlock held and so it may not sleep > + * spinlock held and so it may not sleep. The method must return > + * number of events passed to it. > * @filter: similar to @event; separates normal event handlers from > * "filters". > * @match: called after comparing device's id with handler's id_table > @@ -312,8 +313,8 @@ struct input_handler { > void *private; > > void (*event)(struct input_handle *handle, unsigned int type, unsigned int code, int value); > - void (*events)(struct input_handle *handle, > - const struct input_value *vals, unsigned int count); > + unsigned int (*events)(struct input_handle *handle, > + struct input_value *vals, unsigned int count); > bool (*filter)(struct input_handle *handle, unsigned int type, unsigned int code, int value); > bool (*match)(struct input_handler *handler, struct input_dev *dev); > int (*connect)(struct input_handler *handler, struct input_dev *dev, const struct input_device_id *id); > -- > 2.45.2.803.g4e1b14247a-goog > Kind regards, Jeff LaBundy