Lines Matching refs:udev
74 struct uinput_device *udev = input_get_drvdata(dev);
79 udev->buff[udev->head] = (struct input_event) {
87 udev->head = (udev->head + 1) % UINPUT_BUFFER_SIZE;
89 wake_up_interruptible(&udev->waitq);
95 static bool uinput_request_alloc_id(struct uinput_device *udev,
101 spin_lock(&udev->requests_lock);
104 if (!udev->requests[id]) {
106 udev->requests[id] = request;
112 spin_unlock(&udev->requests_lock);
116 static struct uinput_request *uinput_request_find(struct uinput_device *udev,
123 return udev->requests[id];
126 static int uinput_request_reserve_slot(struct uinput_device *udev,
130 return wait_event_interruptible(udev->requests_waitq,
131 uinput_request_alloc_id(udev, request));
134 static void uinput_request_release_slot(struct uinput_device *udev,
138 spin_lock(&udev->requests_lock);
139 udev->requests[id] = NULL;
140 spin_unlock(&udev->requests_lock);
142 wake_up(&udev->requests_waitq);
145 static int uinput_request_send(struct uinput_device *udev,
150 retval = mutex_lock_interruptible(&udev->mutex);
154 if (udev->state != UIST_CREATED) {
165 uinput_dev_event(udev->dev, EV_UINPUT, request->code, request->id);
168 mutex_unlock(&udev->mutex);
172 static int uinput_request_submit(struct uinput_device *udev,
177 retval = uinput_request_reserve_slot(udev, request);
181 retval = uinput_request_send(udev, request);
193 uinput_request_release_slot(udev, request->id);
201 static void uinput_flush_requests(struct uinput_device *udev)
206 spin_lock(&udev->requests_lock);
209 request = udev->requests[i];
216 spin_unlock(&udev->requests_lock);
238 struct uinput_device *udev = input_get_drvdata(dev);
256 return uinput_request_submit(udev, &request);
261 struct uinput_device *udev = input_get_drvdata(dev);
270 return uinput_request_submit(udev, &request);
279 * the udev->mutex), or the file descriptor is closed and there is
285 static void uinput_destroy_device(struct uinput_device *udev)
288 struct input_dev *dev = udev->dev;
289 enum uinput_state old_state = udev->state;
291 udev->state = UIST_NEW_DEVICE;
297 uinput_flush_requests(udev);
304 udev->dev = NULL;
308 static int uinput_create_device(struct uinput_device *udev)
310 struct input_dev *dev = udev->dev;
313 if (udev->state != UIST_SETUP_COMPLETE) {
335 if (test_bit(EV_FF, dev->evbit) && !udev->ff_effects_max) {
342 if (udev->ff_effects_max) {
343 error = input_ff_create(dev, udev->ff_effects_max);
362 input_set_drvdata(udev->dev, udev);
364 error = input_register_device(udev->dev);
368 udev->state = UIST_CREATED;
373 fail1: uinput_destroy_device(udev);
460 static int uinput_dev_setup(struct uinput_device *udev,
466 if (udev->state == UIST_CREATED)
475 dev = udev->dev;
477 udev->ff_effects_max = setup.ff_effects_max;
484 udev->state = UIST_SETUP_COMPLETE;
488 static int uinput_abs_setup(struct uinput_device *udev,
498 if (udev->state == UIST_CREATED)
507 dev = udev->dev;
523 static int uinput_setup_device_legacy(struct uinput_device *udev,
534 if (!udev->dev) {
535 udev->dev = input_allocate_device();
536 if (!udev->dev)
540 dev = udev->dev;
546 udev->ff_effects_max = user_dev->ff_effects_max;
578 udev->state = UIST_SETUP_COMPLETE;
586 static ssize_t uinput_inject_events(struct uinput_device *udev,
605 input_event(udev->dev, ev.type, ev.code, ev.value);
616 struct uinput_device *udev = file->private_data;
622 retval = mutex_lock_interruptible(&udev->mutex);
626 retval = udev->state == UIST_CREATED ?
627 uinput_inject_events(udev, buffer, count) :
628 uinput_setup_device_legacy(udev, buffer, count);
630 mutex_unlock(&udev->mutex);
635 static bool uinput_fetch_next_event(struct uinput_device *udev,
640 spin_lock_irq(&udev->dev->event_lock);
642 have_event = udev->head != udev->tail;
644 *event = udev->buff[udev->tail];
645 udev->tail = (udev->tail + 1) % UINPUT_BUFFER_SIZE;
648 spin_unlock_irq(&udev->dev->event_lock);
653 static ssize_t uinput_events_to_user(struct uinput_device *udev,
660 uinput_fetch_next_event(udev, &event)) {
674 struct uinput_device *udev = file->private_data;
681 retval = mutex_lock_interruptible(&udev->mutex);
685 if (udev->state != UIST_CREATED)
687 else if (udev->head == udev->tail &&
691 retval = uinput_events_to_user(udev, buffer, count);
693 mutex_unlock(&udev->mutex);
699 retval = wait_event_interruptible(udev->waitq,
700 udev->head != udev->tail ||
701 udev->state != UIST_CREATED);
709 struct uinput_device *udev = file->private_data;
712 poll_wait(file, &udev->waitq, wait);
714 if (udev->head != udev->tail)
722 struct uinput_device *udev = file->private_data;
724 uinput_destroy_device(udev);
725 kfree(udev);
820 if (udev->state == UIST_CREATED) \
824 else set_bit((_arg), udev->dev->_bit); \
857 struct uinput_device *udev = file->private_data;
865 retval = mutex_lock_interruptible(&udev->mutex);
869 if (!udev->dev) {
870 udev->dev = input_allocate_device();
871 if (!udev->dev) {
884 retval = uinput_create_device(udev);
888 uinput_destroy_device(udev);
892 retval = uinput_dev_setup(udev, p);
938 if (udev->state == UIST_CREATED) {
949 kfree(udev->dev->phys);
950 udev->dev->phys = phys;
958 req = uinput_request_find(udev, ff_up.request_id);
981 req = uinput_request_find(udev, ff_erase.request_id);
1001 req = uinput_request_find(udev, ff_up.request_id);
1018 req = uinput_request_find(udev, ff_erase.request_id);
1034 if (udev->state != UIST_CREATED) {
1038 name = dev_name(&udev->dev->dev);
1043 retval = uinput_abs_setup(udev, p, size);
1049 mutex_unlock(&udev->mutex);