Lines Matching refs:udev

75 	struct uinput_device	*udev = input_get_drvdata(dev);
80 udev->buff[udev->head] = (struct input_event) {
88 udev->head = (udev->head + 1) % UINPUT_BUFFER_SIZE;
90 wake_up_interruptible(&udev->waitq);
96 static bool uinput_request_alloc_id(struct uinput_device *udev,
102 spin_lock(&udev->requests_lock);
105 if (!udev->requests[id]) {
107 udev->requests[id] = request;
113 spin_unlock(&udev->requests_lock);
117 static struct uinput_request *uinput_request_find(struct uinput_device *udev,
124 return udev->requests[id];
127 static int uinput_request_reserve_slot(struct uinput_device *udev,
131 return wait_event_interruptible(udev->requests_waitq,
132 uinput_request_alloc_id(udev, request));
135 static void uinput_request_release_slot(struct uinput_device *udev,
139 spin_lock(&udev->requests_lock);
140 udev->requests[id] = NULL;
141 spin_unlock(&udev->requests_lock);
143 wake_up(&udev->requests_waitq);
146 static int uinput_request_send(struct uinput_device *udev,
151 retval = mutex_lock_interruptible(&udev->mutex);
155 if (udev->state != UIST_CREATED) {
166 uinput_dev_event(udev->dev, EV_UINPUT, request->code, request->id);
169 mutex_unlock(&udev->mutex);
173 static int uinput_request_submit(struct uinput_device *udev,
178 retval = uinput_request_reserve_slot(udev, request);
182 retval = uinput_request_send(udev, request);
194 uinput_request_release_slot(udev, request->id);
202 static void uinput_flush_requests(struct uinput_device *udev)
207 spin_lock(&udev->requests_lock);
210 request = udev->requests[i];
217 spin_unlock(&udev->requests_lock);
239 struct uinput_device *udev = input_get_drvdata(dev);
257 return uinput_request_submit(udev, &request);
262 struct uinput_device *udev = input_get_drvdata(dev);
271 return uinput_request_submit(udev, &request);
280 * the udev->mutex), or the file descriptor is closed and there is
286 static void uinput_destroy_device(struct uinput_device *udev)
289 struct input_dev *dev = udev->dev;
290 enum uinput_state old_state = udev->state;
292 udev->state = UIST_NEW_DEVICE;
298 uinput_flush_requests(udev);
305 udev->dev = NULL;
309 static int uinput_create_device(struct uinput_device *udev)
311 struct input_dev *dev = udev->dev;
314 if (udev->state != UIST_SETUP_COMPLETE) {
336 if (test_bit(EV_FF, dev->evbit) && !udev->ff_effects_max) {
343 if (udev->ff_effects_max) {
344 error = input_ff_create(dev, udev->ff_effects_max);
363 input_set_drvdata(udev->dev, udev);
365 error = input_register_device(udev->dev);
369 udev->state = UIST_CREATED;
374 fail1: uinput_destroy_device(udev);
447 static int uinput_dev_setup(struct uinput_device *udev,
453 if (udev->state == UIST_CREATED)
462 dev = udev->dev;
464 udev->ff_effects_max = setup.ff_effects_max;
471 udev->state = UIST_SETUP_COMPLETE;
475 static int uinput_abs_setup(struct uinput_device *udev,
485 if (udev->state == UIST_CREATED)
494 dev = udev->dev;
510 static int uinput_setup_device_legacy(struct uinput_device *udev,
521 if (!udev->dev) {
522 udev->dev = input_allocate_device();
523 if (!udev->dev)
527 dev = udev->dev;
533 udev->ff_effects_max = user_dev->ff_effects_max;
565 udev->state = UIST_SETUP_COMPLETE;
601 static ssize_t uinput_inject_events(struct uinput_device *udev,
623 input_set_timestamp(udev->dev, timestamp);
625 input_event(udev->dev, ev.type, ev.code, ev.value);
636 struct uinput_device *udev = file->private_data;
642 retval = mutex_lock_interruptible(&udev->mutex);
646 retval = udev->state == UIST_CREATED ?
647 uinput_inject_events(udev, buffer, count) :
648 uinput_setup_device_legacy(udev, buffer, count);
650 mutex_unlock(&udev->mutex);
655 static bool uinput_fetch_next_event(struct uinput_device *udev,
660 spin_lock_irq(&udev->dev->event_lock);
662 have_event = udev->head != udev->tail;
664 *event = udev->buff[udev->tail];
665 udev->tail = (udev->tail + 1) % UINPUT_BUFFER_SIZE;
668 spin_unlock_irq(&udev->dev->event_lock);
673 static ssize_t uinput_events_to_user(struct uinput_device *udev,
680 uinput_fetch_next_event(udev, &event)) {
694 struct uinput_device *udev = file->private_data;
701 retval = mutex_lock_interruptible(&udev->mutex);
705 if (udev->state != UIST_CREATED)
707 else if (udev->head == udev->tail &&
711 retval = uinput_events_to_user(udev, buffer, count);
713 mutex_unlock(&udev->mutex);
719 retval = wait_event_interruptible(udev->waitq,
720 udev->head != udev->tail ||
721 udev->state != UIST_CREATED);
729 struct uinput_device *udev = file->private_data;
732 poll_wait(file, &udev->waitq, wait);
734 if (udev->head != udev->tail)
742 struct uinput_device *udev = file->private_data;
744 uinput_destroy_device(udev);
745 kfree(udev);
840 if (udev->state == UIST_CREATED) \
844 else set_bit((_arg), udev->dev->_bit); \
877 struct uinput_device *udev = file->private_data;
885 retval = mutex_lock_interruptible(&udev->mutex);
889 if (!udev->dev) {
890 udev->dev = input_allocate_device();
891 if (!udev->dev) {
904 retval = uinput_create_device(udev);
908 uinput_destroy_device(udev);
912 retval = uinput_dev_setup(udev, p);
958 if (udev->state == UIST_CREATED) {
969 kfree(udev->dev->phys);
970 udev->dev->phys = phys;
978 req = uinput_request_find(udev, ff_up.request_id);
1001 req = uinput_request_find(udev, ff_erase.request_id);
1021 req = uinput_request_find(udev, ff_up.request_id);
1038 req = uinput_request_find(udev, ff_erase.request_id);
1054 if (udev->state != UIST_CREATED) {
1058 name = dev_name(&udev->dev->dev);
1063 retval = uinput_abs_setup(udev, p, size);
1069 mutex_unlock(&udev->mutex);