/linux-4.1.27/drivers/input/ |
H A D | evdev.c | 38 struct evdev { struct 57 struct evdev *evdev; member in struct:evdev_client 215 struct evdev *evdev = client->evdev; evdev_pass_values() local 240 wake_up_interruptible(&evdev->wait); evdev_pass_values() 249 struct evdev *evdev = handle->private; evdev_events() local 260 client = rcu_dereference(evdev->grab); evdev_events() 265 list_for_each_entry_rcu(client, &evdev->client_list, node) evdev_events() 292 struct evdev *evdev = client->evdev; evdev_flush() local 294 mutex_lock(&evdev->mutex); evdev_flush() 296 if (evdev->exist && !client->revoked) evdev_flush() 297 input_flush_device(&evdev->handle, file); evdev_flush() 299 mutex_unlock(&evdev->mutex); evdev_flush() 305 struct evdev *evdev = container_of(dev, struct evdev, dev); evdev_free() local 307 input_put_device(evdev->handle.dev); evdev_free() 308 kfree(evdev); evdev_free() 313 * This function is called with evdev->mutex taken. 315 static int evdev_grab(struct evdev *evdev, struct evdev_client *client) evdev_grab() argument 319 if (evdev->grab) evdev_grab() 322 error = input_grab_device(&evdev->handle); evdev_grab() 326 rcu_assign_pointer(evdev->grab, client); evdev_grab() 331 static int evdev_ungrab(struct evdev *evdev, struct evdev_client *client) evdev_ungrab() argument 333 struct evdev_client *grab = rcu_dereference_protected(evdev->grab, evdev_ungrab() 334 lockdep_is_held(&evdev->mutex)); evdev_ungrab() 339 rcu_assign_pointer(evdev->grab, NULL); evdev_ungrab() 341 input_release_device(&evdev->handle); evdev_ungrab() 346 static void evdev_attach_client(struct evdev *evdev, evdev_attach_client() argument 349 spin_lock(&evdev->client_lock); evdev_attach_client() 350 list_add_tail_rcu(&client->node, &evdev->client_list); evdev_attach_client() 351 spin_unlock(&evdev->client_lock); evdev_attach_client() 354 static void evdev_detach_client(struct evdev *evdev, evdev_detach_client() argument 357 spin_lock(&evdev->client_lock); evdev_detach_client() 359 spin_unlock(&evdev->client_lock); evdev_detach_client() 363 static int evdev_open_device(struct evdev *evdev) evdev_open_device() argument 367 retval = mutex_lock_interruptible(&evdev->mutex); evdev_open_device() 371 if (!evdev->exist) evdev_open_device() 373 else if (!evdev->open++) { evdev_open_device() 374 retval = input_open_device(&evdev->handle); evdev_open_device() 376 evdev->open--; evdev_open_device() 379 mutex_unlock(&evdev->mutex); evdev_open_device() 383 static void evdev_close_device(struct evdev *evdev) evdev_close_device() argument 385 mutex_lock(&evdev->mutex); evdev_close_device() 387 if (evdev->exist && !--evdev->open) evdev_close_device() 388 input_close_device(&evdev->handle); evdev_close_device() 390 mutex_unlock(&evdev->mutex); evdev_close_device() 397 static void evdev_hangup(struct evdev *evdev) evdev_hangup() argument 401 spin_lock(&evdev->client_lock); evdev_hangup() 402 list_for_each_entry(client, &evdev->client_list, node) evdev_hangup() 404 spin_unlock(&evdev->client_lock); evdev_hangup() 406 wake_up_interruptible(&evdev->wait); evdev_hangup() 412 struct evdev *evdev = client->evdev; evdev_release() local 414 mutex_lock(&evdev->mutex); evdev_release() 415 evdev_ungrab(evdev, client); evdev_release() 416 mutex_unlock(&evdev->mutex); evdev_release() 418 evdev_detach_client(evdev, client); evdev_release() 425 evdev_close_device(evdev); evdev_release() 441 struct evdev *evdev = container_of(inode->i_cdev, struct evdev, cdev); evdev_open() local 442 unsigned int bufsize = evdev_compute_buffer_size(evdev->handle.dev); evdev_open() 456 client->evdev = evdev; evdev_open() 457 evdev_attach_client(evdev, client); evdev_open() 459 error = evdev_open_device(evdev); evdev_open() 469 evdev_detach_client(evdev, client); evdev_open() 478 struct evdev *evdev = client->evdev; evdev_write() local 485 retval = mutex_lock_interruptible(&evdev->mutex); evdev_write() 489 if (!evdev->exist || client->revoked) { evdev_write() 502 input_inject_event(&evdev->handle, evdev_write() 507 mutex_unlock(&evdev->mutex); evdev_write() 533 struct evdev *evdev = client->evdev; evdev_read() local 542 if (!evdev->exist || client->revoked) evdev_read() 569 error = wait_event_interruptible(evdev->wait, evdev_read() 571 !evdev->exist || client->revoked); evdev_read() 584 struct evdev *evdev = client->evdev; evdev_poll() local 587 poll_wait(file, &evdev->wait, wait); evdev_poll() 589 if (evdev->exist && !client->revoked) evdev_poll() 844 static int evdev_revoke(struct evdev *evdev, struct evdev_client *client, evdev_revoke() argument 848 evdev_ungrab(evdev, client); evdev_revoke() 849 input_flush_device(&evdev->handle, file); evdev_revoke() 850 wake_up_interruptible(&evdev->wait); evdev_revoke() 859 struct evdev *evdev = client->evdev; evdev_do_ioctl() local 860 struct input_dev *dev = evdev->handle.dev; evdev_do_ioctl() 896 input_inject_event(&evdev->handle, EV_REP, REP_DELAY, u); evdev_do_ioctl() 897 input_inject_event(&evdev->handle, EV_REP, REP_PERIOD, v); evdev_do_ioctl() 913 return evdev_grab(evdev, client); evdev_do_ioctl() 915 return evdev_ungrab(evdev, client); evdev_do_ioctl() 921 return evdev_revoke(evdev, client, file); evdev_do_ioctl() 1061 struct evdev *evdev = client->evdev; evdev_ioctl_handler() local 1064 retval = mutex_lock_interruptible(&evdev->mutex); evdev_ioctl_handler() 1068 if (!evdev->exist || client->revoked) { evdev_ioctl_handler() 1076 mutex_unlock(&evdev->mutex); evdev_ioctl_handler() 1114 static void evdev_mark_dead(struct evdev *evdev) evdev_mark_dead() argument 1116 mutex_lock(&evdev->mutex); evdev_mark_dead() 1117 evdev->exist = false; evdev_mark_dead() 1118 mutex_unlock(&evdev->mutex); evdev_mark_dead() 1121 static void evdev_cleanup(struct evdev *evdev) evdev_cleanup() argument 1123 struct input_handle *handle = &evdev->handle; evdev_cleanup() 1125 evdev_mark_dead(evdev); evdev_cleanup() 1126 evdev_hangup(evdev); evdev_cleanup() 1128 cdev_del(&evdev->cdev); evdev_cleanup() 1130 /* evdev is marked dead so no one else accesses evdev->open */ evdev_cleanup() 1131 if (evdev->open) { evdev_cleanup() 1138 * Create new evdev device. Note that input core serializes calls 1144 struct evdev *evdev; evdev_connect() local 1156 evdev = kzalloc(sizeof(struct evdev), GFP_KERNEL); evdev_connect() 1157 if (!evdev) { evdev_connect() 1162 INIT_LIST_HEAD(&evdev->client_list); evdev_connect() 1163 spin_lock_init(&evdev->client_lock); evdev_connect() 1164 mutex_init(&evdev->mutex); evdev_connect() 1165 init_waitqueue_head(&evdev->wait); evdev_connect() 1166 evdev->exist = true; evdev_connect() 1172 dev_set_name(&evdev->dev, "event%d", dev_no); evdev_connect() 1174 evdev->handle.dev = input_get_device(dev); evdev_connect() 1175 evdev->handle.name = dev_name(&evdev->dev); evdev_connect() 1176 evdev->handle.handler = handler; evdev_connect() 1177 evdev->handle.private = evdev; evdev_connect() 1179 evdev->dev.devt = MKDEV(INPUT_MAJOR, minor); evdev_connect() 1180 evdev->dev.class = &input_class; evdev_connect() 1181 evdev->dev.parent = &dev->dev; evdev_connect() 1182 evdev->dev.release = evdev_free; evdev_connect() 1183 device_initialize(&evdev->dev); evdev_connect() 1185 error = input_register_handle(&evdev->handle); evdev_connect() 1189 cdev_init(&evdev->cdev, &evdev_fops); evdev_connect() 1190 evdev->cdev.kobj.parent = &evdev->dev.kobj; evdev_connect() 1191 error = cdev_add(&evdev->cdev, evdev->dev.devt, 1); evdev_connect() 1195 error = device_add(&evdev->dev); evdev_connect() 1202 evdev_cleanup(evdev); evdev_connect() 1204 input_unregister_handle(&evdev->handle); evdev_connect() 1206 put_device(&evdev->dev); evdev_connect() 1214 struct evdev *evdev = handle->private; evdev_disconnect() local 1216 device_del(&evdev->dev); evdev_disconnect() 1217 evdev_cleanup(evdev); evdev_disconnect() 1218 input_free_minor(MINOR(evdev->dev.devt)); evdev_disconnect() 1220 put_device(&evdev->dev); evdev_disconnect() 1237 .name = "evdev",
|
H A D | Makefile | 17 obj-$(CONFIG_INPUT_EVDEV) += evdev.o
|
H A D | input-compat.h | 7 * Very heavily based on evdev.c - Copyright (c) 1999-2002 Vojtech Pavlik
|
H A D | input-compat.c | 4 * Very heavily based on evdev.c - Copyright (c) 1999-2002 Vojtech Pavlik
|
H A D | input.c | 870 * keymap. Presently evdev handlers use it. 891 * keymap. Presently keyboard and evdev handlers use it.
|
/linux-4.1.27/arch/avr32/kernel/ |
H A D | time.c | 44 struct clock_event_device *evdev = dev_id; timer_interrupt() local 55 evdev->event_handler(evdev); timer_interrupt() 67 struct clock_event_device *evdev) comparator_next_event() 84 struct clock_event_device *evdev) comparator_mode() 88 pr_debug("%s: start\n", evdev->name); comparator_mode() 100 pr_debug("%s: stop\n", evdev->name); comparator_mode() 101 if (evdev->mode == CLOCK_EVT_MODE_ONESHOT || comparator_mode() 102 evdev->mode == CLOCK_EVT_MODE_RESUME) { comparator_mode() 66 comparator_next_event(unsigned long delta, struct clock_event_device *evdev) comparator_next_event() argument 83 comparator_mode(enum clock_event_mode mode, struct clock_event_device *evdev) comparator_mode() argument
|
/linux-4.1.27/arch/score/kernel/ |
H A D | time.c | 33 struct clock_event_device *evdev = dev_id; timer_interrupt() local 37 evdev->event_handler(evdev); timer_interrupt() 49 struct clock_event_device *evdev) score_timer_set_next_event() 59 struct clock_event_device *evdev) score_timer_set_mode() 48 score_timer_set_next_event(unsigned long delta, struct clock_event_device *evdev) score_timer_set_next_event() argument 58 score_timer_set_mode(enum clock_event_mode mode, struct clock_event_device *evdev) score_timer_set_mode() argument
|
/linux-4.1.27/include/linux/ |
H A D | uinput.h | 4 * Heavily based on evdev.c by Vojtech Pavlik
|
/linux-4.1.27/drivers/clocksource/ |
H A D | nomadik-mtu.c | 180 struct clock_event_device *evdev = dev_id; nmdk_timer_interrupt() local 183 evdev->event_handler(evdev); nmdk_timer_interrupt()
|
/linux-4.1.27/drivers/input/touchscreen/ |
H A D | chipone_icn8318.c | 106 * softbutton codes to evdev codes. Currently no known devices icn8318_irq()
|
/linux-4.1.27/include/uapi/linux/ |
H A D | uinput.h | 4 * Heavily based on evdev.c by Vojtech Pavlik
|
/linux-4.1.27/samples/uhid/ |
H A D | uhid-example.c | 29 * input event to the evdev device to see it being sent to this device.
|
/linux-4.1.27/drivers/input/keyboard/ |
H A D | tegra-kbc.c | 801 * we try to call do_gettimeofday() in evdev tegra_kbc_resume()
|
/linux-4.1.27/drivers/input/misc/ |
H A D | uinput.c | 4 * Heavily based on evdev.c by Vojtech Pavlik
|
/linux-4.1.27/drivers/media/rc/ |
H A D | rc-main.c | 325 * This routine is used to handle evdev EVIOCSKEY ioctl. 443 * This routine is used to handle evdev EVIOCGKEY ioctl.
|