Lines Matching refs:q
418 struct sigqueue *q = NULL; in __sigqueue_alloc() local
438 q = kmem_cache_alloc(sigqueue_cachep, flags); in __sigqueue_alloc()
443 if (unlikely(q == NULL)) { in __sigqueue_alloc()
447 INIT_LIST_HEAD(&q->list); in __sigqueue_alloc()
448 q->flags = 0; in __sigqueue_alloc()
449 q->user = user; in __sigqueue_alloc()
452 return q; in __sigqueue_alloc()
455 static void __sigqueue_free(struct sigqueue *q) in __sigqueue_free() argument
457 if (q->flags & SIGQUEUE_PREALLOC) in __sigqueue_free()
459 if (atomic_dec_and_test(&q->user->sigpending)) in __sigqueue_free()
460 free_uid(q->user); in __sigqueue_free()
461 kmem_cache_free(sigqueue_cachep, q); in __sigqueue_free()
466 struct sigqueue *q; in flush_sigqueue() local
470 q = list_entry(queue->list.next, struct sigqueue , list); in flush_sigqueue()
471 list_del_init(&q->list); in flush_sigqueue()
472 __sigqueue_free(q); in flush_sigqueue()
495 struct sigqueue *q, *n; in __flush_itimer_signals() local
500 list_for_each_entry_safe(q, n, &pending->list, list) { in __flush_itimer_signals()
501 int sig = q->info.si_signo; in __flush_itimer_signals()
503 if (likely(q->info.si_code != SI_TIMER)) { in __flush_itimer_signals()
507 list_del_init(&q->list); in __flush_itimer_signals()
508 __sigqueue_free(q); in __flush_itimer_signals()
574 struct sigqueue *q, *first = NULL; in collect_signal() local
580 list_for_each_entry(q, &list->list, list) { in collect_signal()
581 if (q->info.si_signo == sig) { in collect_signal()
584 first = q; in collect_signal()
714 struct sigqueue *q, *sync = NULL; in dequeue_synchronous_signal() local
725 list_for_each_entry(q, &pending->list, list) { in dequeue_synchronous_signal()
727 if ((q->info.si_code > SI_USER) && in dequeue_synchronous_signal()
728 (sigmask(q->info.si_signo) & SYNCHRONOUS_MASK)) { in dequeue_synchronous_signal()
729 sync = q; in dequeue_synchronous_signal()
738 list_for_each_entry_continue(q, &pending->list, list) { in dequeue_synchronous_signal()
739 if (q->info.si_signo == sync->info.si_signo) in dequeue_synchronous_signal()
785 struct sigqueue *q, *n; in flush_sigqueue_mask() local
793 list_for_each_entry_safe(q, n, &s->list, list) { in flush_sigqueue_mask()
794 if (sigismember(mask, q->info.si_signo)) { in flush_sigqueue_mask()
795 list_del_init(&q->list); in flush_sigqueue_mask()
796 __sigqueue_free(q); in flush_sigqueue_mask()
1078 struct sigqueue *q; in __send_signal() local
1119 q = __sigqueue_alloc(sig, t, GFP_ATOMIC, override_rlimit); in __send_signal()
1120 if (q) { in __send_signal()
1121 list_add_tail(&q->list, &pending->list); in __send_signal()
1124 clear_siginfo(&q->info); in __send_signal()
1125 q->info.si_signo = sig; in __send_signal()
1126 q->info.si_errno = 0; in __send_signal()
1127 q->info.si_code = SI_USER; in __send_signal()
1128 q->info.si_pid = task_tgid_nr_ns(current, in __send_signal()
1131 q->info.si_uid = in __send_signal()
1137 clear_siginfo(&q->info); in __send_signal()
1138 q->info.si_signo = sig; in __send_signal()
1139 q->info.si_errno = 0; in __send_signal()
1140 q->info.si_code = SI_KERNEL; in __send_signal()
1141 q->info.si_pid = 0; in __send_signal()
1142 q->info.si_uid = 0; in __send_signal()
1145 copy_siginfo(&q->info, info); in __send_signal()
1822 struct sigqueue *q = __sigqueue_alloc(-1, current, GFP_KERNEL, 0); in sigqueue_alloc() local
1824 if (q) in sigqueue_alloc()
1825 q->flags |= SIGQUEUE_PREALLOC; in sigqueue_alloc()
1827 return q; in sigqueue_alloc()
1830 void sigqueue_free(struct sigqueue *q) in sigqueue_free() argument
1835 BUG_ON(!(q->flags & SIGQUEUE_PREALLOC)); in sigqueue_free()
1842 q->flags &= ~SIGQUEUE_PREALLOC; in sigqueue_free()
1847 if (!list_empty(&q->list)) in sigqueue_free()
1848 q = NULL; in sigqueue_free()
1851 if (q) in sigqueue_free()
1852 __sigqueue_free(q); in sigqueue_free()
1855 int send_sigqueue(struct sigqueue *q, struct pid *pid, enum pid_type type) in send_sigqueue() argument
1857 int sig = q->info.si_signo; in send_sigqueue()
1863 BUG_ON(!(q->flags & SIGQUEUE_PREALLOC)); in send_sigqueue()
1877 if (unlikely(!list_empty(&q->list))) { in send_sigqueue()
1882 BUG_ON(q->info.si_code != SI_TIMER); in send_sigqueue()
1883 q->info.si_overrun++; in send_sigqueue()
1887 q->info.si_overrun = 0; in send_sigqueue()
1891 list_add_tail(&q->list, &pending->list); in send_sigqueue()
1896 trace_signal_generate(sig, &q->info, t, type != PIDTYPE_PID, result); in send_sigqueue()