Lines Matching defs:ev_int
45 bool iio_event_enabled(const struct iio_event_interface *ev_int)
47 return !!test_bit(IIO_BUSY_BIT_POS, &ev_int->flags);
67 struct iio_event_interface *ev_int = iio_dev_opaque->event_interface;
71 if (!ev_int)
75 if (iio_event_enabled(ev_int)) {
80 copied = kfifo_put(&ev_int->det_events, ev);
82 wake_up_poll(&ev_int->wait, EPOLLIN);
102 struct iio_event_interface *ev_int = iio_dev_opaque->event_interface;
108 poll_wait(filep, &ev_int->wait, wait);
110 if (!kfifo_is_empty(&ev_int->det_events))
123 struct iio_event_interface *ev_int = iio_dev_opaque->event_interface;
134 if (kfifo_is_empty(&ev_int->det_events)) {
138 ret = wait_event_interruptible(ev_int->wait,
139 !kfifo_is_empty(&ev_int->det_events) ||
147 if (mutex_lock_interruptible(&ev_int->read_lock))
149 ret = kfifo_to_user(&ev_int->det_events, buf, count, &copied);
150 mutex_unlock(&ev_int->read_lock);
173 struct iio_event_interface *ev_int = iio_dev_opaque->event_interface;
175 clear_bit(IIO_BUSY_BIT_POS, &ev_int->flags);
193 struct iio_event_interface *ev_int = iio_dev_opaque->event_interface;
196 if (ev_int == NULL)
203 if (test_and_set_bit(IIO_BUSY_BIT_POS, &ev_int->flags)) {
213 clear_bit(IIO_BUSY_BIT_POS, &ev_int->flags);
216 kfifo_reset_out(&ev_int->det_events);
469 static void iio_setup_ev_int(struct iio_event_interface *ev_int)
471 INIT_KFIFO(ev_int->det_events);
472 init_waitqueue_head(&ev_int->wait);
473 mutex_init(&ev_int->read_lock);
480 struct iio_event_interface *ev_int;
489 ev_int = kzalloc(sizeof(struct iio_event_interface), GFP_KERNEL);
490 if (ev_int == NULL)
493 iio_dev_opaque->event_interface = ev_int;
495 INIT_LIST_HEAD(&ev_int->dev_attr_list);
497 iio_setup_ev_int(ev_int);
511 ev_int->group.name = iio_event_group_name;
512 ev_int->group.attrs = kcalloc(attrcount + 1,
513 sizeof(ev_int->group.attrs[0]),
515 if (ev_int->group.attrs == NULL) {
520 memcpy(ev_int->group.attrs,
522 sizeof(ev_int->group.attrs[0]) * attrcount_orig);
525 list_for_each_entry(p, &ev_int->dev_attr_list, l)
526 ev_int->group.attrs[attrn++] = &p->dev_attr.attr;
527 indio_dev->groups[indio_dev->groupcounter++] = &ev_int->group;
532 iio_free_chan_devattr_list(&ev_int->dev_attr_list);
533 kfree(ev_int);
557 struct iio_event_interface *ev_int = iio_dev_opaque->event_interface;
559 if (ev_int == NULL)
561 iio_free_chan_devattr_list(&ev_int->dev_attr_list);
562 kfree(ev_int->group.attrs);
563 kfree(ev_int);