]> sourceware.org Git - glibc.git/blame - sysdeps/unix/sysv/linux/sigprocmask.c
Convert 231 sysdeps function definitions to prototype style.
[glibc.git] / sysdeps / unix / sysv / linux / sigprocmask.c
CommitLineData
b168057a 1/* Copyright (C) 1997-2015 Free Software Foundation, Inc.
cbdee279
UD
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
41bdb6e2
AJ
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
cbdee279
UD
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
41bdb6e2 12 Lesser General Public License for more details.
cbdee279 13
41bdb6e2 14 You should have received a copy of the GNU Lesser General Public
59ba27a6
PE
15 License along with the GNU C Library; if not, see
16 <http://www.gnu.org/licenses/>. */
cbdee279
UD
17
18#include <errno.h>
19#include <signal.h>
e876b090 20#include <string.h> /* Needed for string function builtin redirection. */
cbdee279
UD
21#include <unistd.h>
22
0dee6738
UD
23#include <sysdep.h>
24#include <sys/syscall.h>
25
e876b090 26#include <nptl/pthreadP.h> /* SIGCANCEL, SIGSETXID */
958f238f
UD
27
28
cbdee279
UD
29/* Get and/or change the set of blocked signals. */
30int
bd2260a2 31__sigprocmask (int how, const sigset_t *set, sigset_t *oset)
cbdee279 32{
e7608d77
UD
33#ifdef SIGCANCEL
34 sigset_t local_newmask;
35
53b4fed6
UD
36 /* The only thing we have to make sure here is that SIGCANCEL and
37 SIGSETXID are not blocked. */
38 if (set != NULL
39 && (__builtin_expect (__sigismember (set, SIGCANCEL), 0)
40# ifdef SIGSETXID
41 || __builtin_expect (__sigismember (set, SIGSETXID), 0)
42# endif
43 ))
e7608d77
UD
44 {
45 local_newmask = *set;
46 __sigdelset (&local_newmask, SIGCANCEL);
53b4fed6
UD
47# ifdef SIGSETXID
48 __sigdelset (&local_newmask, SIGSETXID);
49# endif
e7608d77
UD
50 set = &local_newmask;
51 }
52#endif
53
e5dee2c8 54 return INLINE_SYSCALL (rt_sigprocmask, 4, how, set, oset, _NSIG / 8);
cbdee279
UD
55}
56weak_alias (__sigprocmask, sigprocmask)
This page took 0.645856 seconds and 5 git commands to generate.