Lines Matching defs:list
41 struct hidraw_list *list = file->private_data;
45 mutex_lock(&list->read_mutex);
48 if (list->head == list->tail) {
49 add_wait_queue(&list->hidraw->wait, &wait);
52 while (list->head == list->tail) {
57 if (!list->hidraw->exist) {
67 mutex_unlock(&list->read_mutex);
69 mutex_lock(&list->read_mutex);
74 remove_wait_queue(&list->hidraw->wait, &wait);
80 len = list->buffer[list->tail].len > count ?
81 count : list->buffer[list->tail].len;
83 if (list->buffer[list->tail].value) {
84 if (copy_to_user(buffer, list->buffer[list->tail].value, len)) {
91 kfree(list->buffer[list->tail].value);
92 list->buffer[list->tail].value = NULL;
93 list->tail = (list->tail + 1) & (HIDRAW_BUFFER_SIZE - 1);
96 mutex_unlock(&list->read_mutex);
251 struct hidraw_list *list = file->private_data;
254 poll_wait(file, &list->hidraw->wait, wait);
255 if (list->head != list->tail)
257 if (!list->hidraw->exist)
266 struct hidraw_list *list;
270 if (!(list = kzalloc(sizeof(struct hidraw_list), GFP_KERNEL))) {
297 list->hidraw = hidraw_table[minor];
298 mutex_init(&list->read_mutex);
300 list_add_tail(&list->node, &hidraw_table[minor]->list);
302 file->private_data = list;
307 kfree(list);
314 struct hidraw_list *list = file->private_data;
316 return fasync_helper(fd, file, on, &list->fasync);
347 struct hidraw_list *list = file->private_data;
354 for (i = list->tail; i < list->head; i++)
355 kfree(list->buffer[i].value);
356 list_del(&list->node);
358 kfree(list);
491 struct hidraw_list *list;
496 list_for_each_entry(list, &dev->list, node) {
497 int new_head = (list->head + 1) & (HIDRAW_BUFFER_SIZE - 1);
499 if (new_head == list->tail)
502 if (!(list->buffer[list->head].value = kmemdup(data, len, GFP_ATOMIC))) {
506 list->buffer[list->head].len = len;
507 list->head = new_head;
508 kill_fasync(&list->fasync, SIGIO, POLL_IN);
559 INIT_LIST_HEAD(&dev->list);