Lines Matching +full:signal +full:- +full:group
1 /* SPDX-License-Identifier: GPL-2.0 */
25 #define SI_EXPANSION_SIZE (sizeof(struct siginfo) - sizeof(struct kernel_siginfo))
64 unsigned long sig = _sig - 1;
66 set->sig[0] |= 1UL << sig;
68 set->sig[sig / _NSIG_BPW] |= 1UL << (sig % _NSIG_BPW);
73 unsigned long sig = _sig - 1;
75 set->sig[0] &= ~(1UL << sig);
77 set->sig[sig / _NSIG_BPW] &= ~(1UL << (sig % _NSIG_BPW));
82 unsigned long sig = _sig - 1;
84 return 1 & (set->sig[0] >> sig);
86 return 1 & (set->sig[sig / _NSIG_BPW] >> (sig % _NSIG_BPW));
95 return (set->sig[3] | set->sig[2] |
96 set->sig[1] | set->sig[0]) == 0;
98 return (set->sig[1] | set->sig[0]) == 0;
100 return set->sig[0] == 0;
111 return (set1->sig[3] == set2->sig[3]) &&
112 (set1->sig[2] == set2->sig[2]) &&
113 (set1->sig[1] == set2->sig[1]) &&
114 (set1->sig[0] == set2->sig[0]);
116 return (set1->sig[1] == set2->sig[1]) &&
117 (set1->sig[0] == set2->sig[0]);
119 return set1->sig[0] == set2->sig[0];
124 #define sigmask(sig) (1UL << ((sig) - 1))
136 a3 = a->sig[3]; a2 = a->sig[2]; \
137 b3 = b->sig[3]; b2 = b->sig[2]; \
138 r->sig[3] = op(a3, b3); \
139 r->sig[2] = op(a2, b2); \
142 a1 = a->sig[1]; b1 = b->sig[1]; \
143 r->sig[1] = op(a1, b1); \
146 a0 = a->sig[0]; b0 = b->sig[0]; \
147 r->sig[0] = op(a0, b0); \
172 case 4: set->sig[3] = op(set->sig[3]); \
173 set->sig[2] = op(set->sig[2]); \
175 case 2: set->sig[1] = op(set->sig[1]); \
177 case 1: set->sig[0] = op(set->sig[0]); \
196 case 2: set->sig[1] = 0;
198 case 1: set->sig[0] = 0;
207 memset(set, -1, sizeof(sigset_t));
209 case 2: set->sig[1] = -1;
211 case 1: set->sig[0] = -1;
220 set->sig[0] |= mask;
225 set->sig[0] &= ~mask;
230 return (set->sig[0] & mask) != 0;
235 set->sig[0] = mask;
238 memset(&set->sig[1], 0, sizeof(long)*(_NSIG_WORDS-1));
240 case 2: set->sig[1] = 0;
248 set->sig[0] = ~mask;
251 memset(&set->sig[1], -1, sizeof(long)*(_NSIG_WORDS-1));
253 case 2: set->sig[1] = -1;
263 sigemptyset(&sig->signal);
264 INIT_LIST_HEAD(&sig->list);
269 /* Test if 'sig' is valid signal. Use this instead of testing _NSIG directly */
301 * Kernel threads handle their own signals. Let the signal code
311 * Kernel threads handle their own signals. Let the signal code
328 * In POSIX a signal is sent either to a specific thread (Linux task)
329 * or to the process as a whole (Linux thread group). How the signal
330 * is sent determines whether it's to one thread or the whole group,
331 * which determines which signal mask(s) are involved in blocking it
332 * from being delivered until later. When the signal is delivered,
334 * effect that applies to the whole thread group (POSIX process).
336 * The possible effects an unblocked signal set to SIG_DFL can have are:
337 * ignore - Nothing Happens
338 * terminate - kill the process, i.e. all threads in the group,
339 * similar to exit_group. The group leader (only) reports
341 * coredump - write a core dump file describing all threads using
343 * stop - stop all the threads in the group, i.e. TASK_STOPPED state
349 * +--------------------+------------------+
350 * | POSIX signal | default action |
351 * +--------------------+------------------+
383 * | SIGRTMIN-SIGRTMAX | terminate |
384 * +--------------------+------------------+
385 * | non-POSIX signal | default action |
386 * +--------------------+------------------+
388 * +--------------------+------------------+
392 * When SIGCONT is sent, it resumes the process (all threads in the group)
395 * catching, or ignoring SIGCONT. When any stop signal is sent, it clears
397 * catching, or ignored the stop signal, though (except for SIGSTOP) the
408 #define rt_sigmask(sig) (1ULL << ((sig)-1))
450 (t)->sighand->action[(signr)-1].sa.sa_handler == SIG_DFL)
460 unsafe_put_user((void __user *)t->sas_ss_sp, &__uss->ss_sp, label); \
461 unsafe_put_user(t->sas_ss_flags, &__uss->ss_flags, label); \
462 unsafe_put_user(t->sas_ss_size, &__uss->ss_size, label); \
463 if (t->sas_ss_flags & SS_AUTODISARM) \