Lines Matching defs:evdev
28 struct evdev {
47 struct evdev *evdev;
145 ktime_t *ev_time = input_get_timestamp(client->evdev->handle.dev);
294 struct evdev *evdev = handle->private;
300 client = rcu_dereference(evdev->grab);
305 list_for_each_entry_rcu(client, &evdev->client_list, node)
331 struct evdev *evdev = container_of(dev, struct evdev, dev);
333 input_put_device(evdev->handle.dev);
334 kfree(evdev);
339 * This function is called with evdev->mutex taken.
341 static int evdev_grab(struct evdev *evdev, struct evdev_client *client)
345 if (evdev->grab)
348 error = input_grab_device(&evdev->handle);
352 rcu_assign_pointer(evdev->grab, client);
357 static int evdev_ungrab(struct evdev *evdev, struct evdev_client *client)
359 struct evdev_client *grab = rcu_dereference_protected(evdev->grab,
360 lockdep_is_held(&evdev->mutex));
365 rcu_assign_pointer(evdev->grab, NULL);
367 input_release_device(&evdev->handle);
372 static void evdev_attach_client(struct evdev *evdev,
375 spin_lock(&evdev->client_lock);
376 list_add_tail_rcu(&client->node, &evdev->client_list);
377 spin_unlock(&evdev->client_lock);
380 static void evdev_detach_client(struct evdev *evdev,
383 spin_lock(&evdev->client_lock);
385 spin_unlock(&evdev->client_lock);
389 static int evdev_open_device(struct evdev *evdev)
393 retval = mutex_lock_interruptible(&evdev->mutex);
397 if (!evdev->exist)
399 else if (!evdev->open++) {
400 retval = input_open_device(&evdev->handle);
402 evdev->open--;
405 mutex_unlock(&evdev->mutex);
409 static void evdev_close_device(struct evdev *evdev)
411 mutex_lock(&evdev->mutex);
413 if (evdev->exist && !--evdev->open)
414 input_close_device(&evdev->handle);
416 mutex_unlock(&evdev->mutex);
423 static void evdev_hangup(struct evdev *evdev)
427 spin_lock(&evdev->client_lock);
428 list_for_each_entry(client, &evdev->client_list, node) {
432 spin_unlock(&evdev->client_lock);
438 struct evdev *evdev = client->evdev;
441 mutex_lock(&evdev->mutex);
443 if (evdev->exist && !client->revoked)
444 input_flush_device(&evdev->handle, file);
446 evdev_ungrab(evdev, client);
447 mutex_unlock(&evdev->mutex);
449 evdev_detach_client(evdev, client);
456 evdev_close_device(evdev);
472 struct evdev *evdev = container_of(inode->i_cdev, struct evdev, cdev);
473 unsigned int bufsize = evdev_compute_buffer_size(evdev->handle.dev);
484 client->evdev = evdev;
485 evdev_attach_client(evdev, client);
487 error = evdev_open_device(evdev);
497 evdev_detach_client(evdev, client);
506 struct evdev *evdev = client->evdev;
513 retval = mutex_lock_interruptible(&evdev->mutex);
517 if (!evdev->exist || client->revoked) {
530 input_inject_event(&evdev->handle,
536 mutex_unlock(&evdev->mutex);
562 struct evdev *evdev = client->evdev;
571 if (!evdev->exist || client->revoked)
600 !evdev->exist || client->revoked);
613 struct evdev *evdev = client->evdev;
618 if (evdev->exist && !client->revoked)
943 static int evdev_revoke(struct evdev *evdev, struct evdev_client *client,
947 evdev_ungrab(evdev, client);
948 input_flush_device(&evdev->handle, file);
954 /* must be called with evdev-mutex held */
990 /* must be called with evdev-mutex held */
1033 struct evdev *evdev = client->evdev;
1034 struct input_dev *dev = evdev->handle.dev;
1071 input_inject_event(&evdev->handle, EV_REP, REP_DELAY, u);
1072 input_inject_event(&evdev->handle, EV_REP, REP_PERIOD, v);
1088 return evdev_grab(evdev, client);
1090 return evdev_ungrab(evdev, client);
1096 return evdev_revoke(evdev, client, file);
1260 struct evdev *evdev = client->evdev;
1263 retval = mutex_lock_interruptible(&evdev->mutex);
1267 if (!evdev->exist || client->revoked) {
1275 mutex_unlock(&evdev->mutex);
1312 static void evdev_mark_dead(struct evdev *evdev)
1314 mutex_lock(&evdev->mutex);
1315 evdev->exist = false;
1316 mutex_unlock(&evdev->mutex);
1319 static void evdev_cleanup(struct evdev *evdev)
1321 struct input_handle *handle = &evdev->handle;
1323 evdev_mark_dead(evdev);
1324 evdev_hangup(evdev);
1326 /* evdev is marked dead so no one else accesses evdev->open */
1327 if (evdev->open) {
1334 * Create new evdev device. Note that input core serializes calls
1340 struct evdev *evdev;
1352 evdev = kzalloc(sizeof(struct evdev), GFP_KERNEL);
1353 if (!evdev) {
1358 INIT_LIST_HEAD(&evdev->client_list);
1359 spin_lock_init(&evdev->client_lock);
1360 mutex_init(&evdev->mutex);
1361 evdev->exist = true;
1367 dev_set_name(&evdev->dev, "event%d", dev_no);
1369 evdev->handle.dev = input_get_device(dev);
1370 evdev->handle.name = dev_name(&evdev->dev);
1371 evdev->handle.handler = handler;
1372 evdev->handle.private = evdev;
1374 evdev->dev.devt = MKDEV(INPUT_MAJOR, minor);
1375 evdev->dev.class = &input_class;
1376 evdev->dev.parent = &dev->dev;
1377 evdev->dev.release = evdev_free;
1378 device_initialize(&evdev->dev);
1380 error = input_register_handle(&evdev->handle);
1384 cdev_init(&evdev->cdev, &evdev_fops);
1386 error = cdev_device_add(&evdev->cdev, &evdev->dev);
1393 evdev_cleanup(evdev);
1394 input_unregister_handle(&evdev->handle);
1396 put_device(&evdev->dev);
1404 struct evdev *evdev = handle->private;
1406 cdev_device_del(&evdev->cdev, &evdev->dev);
1407 evdev_cleanup(evdev);
1408 input_free_minor(MINOR(evdev->dev.devt));
1410 put_device(&evdev->dev);
1427 .name = "evdev",