Lines Matching full:messages
43 Class for asynchronous messages.
540 /* Enable buffering of incoming messages, flush the buffer */
547 line6->messages.active = 1; in line6_hwdep_open()
548 line6->messages.nonblock = file->f_flags & O_NONBLOCK ? 1 : 0; in line6_hwdep_open()
558 line6->messages.active = 0; in line6_hwdep_release()
572 if (mutex_lock_interruptible(&line6->messages.read_lock)) in line6_hwdep_read()
575 while (kfifo_len(&line6->messages.fifo) == 0) { in line6_hwdep_read()
576 mutex_unlock(&line6->messages.read_lock); in line6_hwdep_read()
578 if (line6->messages.nonblock) in line6_hwdep_read()
582 line6->messages.wait_queue, in line6_hwdep_read()
583 kfifo_len(&line6->messages.fifo) != 0); in line6_hwdep_read()
587 if (mutex_lock_interruptible(&line6->messages.read_lock)) in line6_hwdep_read()
591 if (kfifo_peek_len(&line6->messages.fifo) > count) { in line6_hwdep_read()
595 rv = kfifo_to_user(&line6->messages.fifo, buf, count, &out_count); in line6_hwdep_read()
600 mutex_unlock(&line6->messages.read_lock); in line6_hwdep_read()
634 poll_wait(file, &line6->messages.wait_queue, wait); in line6_hwdep_poll()
636 mutex_lock(&line6->messages.read_lock); in line6_hwdep_poll()
637 rv = kfifo_len(&line6->messages.fifo) == 0 ? 0 : EPOLLIN | EPOLLRDNORM; in line6_hwdep_poll()
638 mutex_unlock(&line6->messages.read_lock); in line6_hwdep_poll()
654 if (!line6->messages.active) in line6_hwdep_push_message()
657 if (kfifo_avail(&line6->messages.fifo) >= line6->message_length) { in line6_hwdep_push_message()
659 kfifo_in(&line6->messages.fifo, in line6_hwdep_push_message()
663 wake_up_interruptible(&line6->messages.wait_queue); in line6_hwdep_push_message()
673 line6->messages.active = 0; in line6_hwdep_init()
674 init_waitqueue_head(&line6->messages.wait_queue); in line6_hwdep_init()
675 mutex_init(&line6->messages.read_lock); in line6_hwdep_init()
676 INIT_KFIFO(line6->messages.fifo); in line6_hwdep_init()