Lines Matching defs:list

41 static inline bool hidraw_is_revoked(struct hidraw_list *list)
43 return list->revoked;
48 struct hidraw_list *list = file->private_data;
52 if (hidraw_is_revoked(list))
55 mutex_lock(&list->read_mutex);
58 if (list->head == list->tail) {
59 add_wait_queue(&list->hidraw->wait, &wait);
62 while (list->head == list->tail) {
67 if (!list->hidraw->exist) {
77 mutex_unlock(&list->read_mutex);
79 mutex_lock(&list->read_mutex);
84 remove_wait_queue(&list->hidraw->wait, &wait);
90 len = list->buffer[list->tail].len > count ?
91 count : list->buffer[list->tail].len;
93 if (list->buffer[list->tail].value) {
94 if (copy_to_user(buffer, list->buffer[list->tail].value, len)) {
101 kfree(list->buffer[list->tail].value);
102 list->buffer[list->tail].value = NULL;
103 list->tail = (list->tail + 1) & (HIDRAW_BUFFER_SIZE - 1);
106 mutex_unlock(&list->read_mutex);
172 struct hidraw_list *list = file->private_data;
175 if (hidraw_is_revoked(list))
265 struct hidraw_list *list = file->private_data;
268 poll_wait(file, &list->hidraw->wait, wait);
269 if (list->head != list->tail)
271 if (!list->hidraw->exist || hidraw_is_revoked(list))
280 struct hidraw_list *list;
284 if (!(list = kzalloc(sizeof(struct hidraw_list), GFP_KERNEL))) {
316 list->hidraw = hidraw_table[minor];
317 mutex_init(&list->read_mutex);
319 list_add_tail(&list->node, &hidraw_table[minor]->list);
321 file->private_data = list;
326 kfree(list);
333 struct hidraw_list *list = file->private_data;
335 if (hidraw_is_revoked(list))
338 return fasync_helper(fd, file, on, &list->fasync);
369 struct hidraw_list *list = file->private_data;
375 while (list->tail != list->head) {
376 kfree(list->buffer[list->tail].value);
377 list->buffer[list->tail].value = NULL;
378 list->tail = (list->tail + 1) & (HIDRAW_BUFFER_SIZE - 1);
380 list_del(&list->node);
382 kfree(list);
390 static int hidraw_revoke(struct hidraw_list *list)
392 list->revoked = true;
404 struct hidraw_list *list = file->private_data;
409 if (!dev || !dev->exist || hidraw_is_revoked(list)) {
452 ret = hidraw_revoke(list);
553 struct hidraw_list *list;
558 list_for_each_entry(list, &dev->list, node) {
559 int new_head = (list->head + 1) & (HIDRAW_BUFFER_SIZE - 1);
561 if (hidraw_is_revoked(list) || new_head == list->tail)
564 if (!(list->buffer[list->head].value = kmemdup(data, len, GFP_ATOMIC))) {
568 list->buffer[list->head].len = len;
569 list->head = new_head;
570 kill_fasync(&list->fasync, SIGIO, POLL_IN);
621 INIT_LIST_HEAD(&dev->list);