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))
66 unsigned long sig = _sig - 1;
68 set->sig[0] |= 1UL << sig;
70 set->sig[sig / _NSIG_BPW] |= 1UL << (sig % _NSIG_BPW);
75 unsigned long sig = _sig - 1;
77 set->sig[0] &= ~(1UL << sig);
79 set->sig[sig / _NSIG_BPW] &= ~(1UL << (sig % _NSIG_BPW));
84 unsigned long sig = _sig - 1;
86 return 1 & (set->sig[0] >> sig);
88 return 1 & (set->sig[sig / _NSIG_BPW] >> (sig % _NSIG_BPW));
97 return (set->sig[3] | set->sig[2] |
98 set->sig[1] | set->sig[0]) == 0;
100 return (set->sig[1] | set->sig[0]) == 0;
102 return set->sig[0] == 0;
113 return (set1->sig[3] == set2->sig[3]) &&
114 (set1->sig[2] == set2->sig[2]) &&
115 (set1->sig[1] == set2->sig[1]) &&
116 (set1->sig[0] == set2->sig[0]);
118 return (set1->sig[1] == set2->sig[1]) &&
119 (set1->sig[0] == set2->sig[0]);
121 return set1->sig[0] == set2->sig[0];
126 #define sigmask(sig) (1UL << ((sig) - 1))
137 a3 = a->sig[3]; a2 = a->sig[2]; \
138 b3 = b->sig[3]; b2 = b->sig[2]; \
139 r->sig[3] = op(a3, b3); \
140 r->sig[2] = op(a2, b2); \
143 a1 = a->sig[1]; b1 = b->sig[1]; \
144 r->sig[1] = op(a1, b1); \
147 a0 = a->sig[0]; b0 = b->sig[0]; \
148 r->sig[0] = op(a0, b0); \
173 case 4: set->sig[3] = op(set->sig[3]); \
174 set->sig[2] = op(set->sig[2]); \
176 case 2: set->sig[1] = op(set->sig[1]); \
178 case 1: set->sig[0] = op(set->sig[0]); \
197 case 2: set->sig[1] = 0;
199 case 1: set->sig[0] = 0;
208 memset(set, -1, sizeof(sigset_t));
210 case 2: set->sig[1] = -1;
212 case 1: set->sig[0] = -1;
221 set->sig[0] |= mask;
226 set->sig[0] &= ~mask;
231 return (set->sig[0] & mask) != 0;
236 set->sig[0] = mask;
239 memset(&set->sig[1], 0, sizeof(long)*(_NSIG_WORDS-1));
241 case 2: set->sig[1] = 0;
249 set->sig[0] = ~mask;
252 memset(&set->sig[1], -1, sizeof(long)*(_NSIG_WORDS-1));
254 case 2: set->sig[1] = -1;
264 sigemptyset(&sig->signal);
265 INIT_LIST_HEAD(&sig->list);
270 /* Test if 'sig' is valid signal. Use this instead of testing _NSIG directly */
303 * Kernel threads handle their own signals. Let the signal code
313 * Kernel threads handle their own signals. Let the signal code
330 * In POSIX a signal is sent either to a specific thread (Linux task)
331 * or to the process as a whole (Linux thread group). How the signal
332 * is sent determines whether it's to one thread or the whole group,
333 * which determines which signal mask(s) are involved in blocking it
334 * from being delivered until later. When the signal is delivered,
336 * effect that applies to the whole thread group (POSIX process).
338 * The possible effects an unblocked signal set to SIG_DFL can have are:
339 * ignore - Nothing Happens
340 * terminate - kill the process, i.e. all threads in the group,
341 * similar to exit_group. The group leader (only) reports
343 * coredump - write a core dump file describing all threads using
345 * stop - stop all the threads in the group, i.e. TASK_STOPPED state
351 * +--------------------+------------------+
352 * | POSIX signal | default action |
353 * +--------------------+------------------+
385 * | SIGRTMIN-SIGRTMAX | terminate |
386 * +--------------------+------------------+
387 * | non-POSIX signal | default action |
388 * +--------------------+------------------+
390 * +--------------------+------------------+
394 * When SIGCONT is sent, it resumes the process (all threads in the group)
397 * catching, or ignoring SIGCONT. When any stop signal is sent, it clears
399 * catching, or ignored the stop signal, though (except for SIGSTOP) the
410 #define rt_sigmask(sig) (1ULL << ((sig)-1))
452 (t)->sighand->action[(signr)-1].sa.sa_handler == SIG_DFL)
462 unsafe_put_user((void __user *)t->sas_ss_sp, &__uss->ss_sp, label); \
463 unsafe_put_user(t->sas_ss_flags, &__uss->ss_flags, label); \
464 unsafe_put_user(t->sas_ss_size, &__uss->ss_size, label); \
480 * Given a fault address and a signal and si_code which correspond to the
482 * the signal handler does not have SA_EXPOSE_TAGBITS enabled in sa_flags.