1 /* Copyright (C) 1997-2021 Free Software Foundation, Inc.
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
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.
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
12    Lesser General Public License for more details.
13 
14    You should have received a copy of the GNU Lesser General Public
15    License along with the GNU C Library.  If not, see
16    <https://www.gnu.org/licenses/>.  */
17 
18 #define SA_RESTORER	0x04000000
19 
20 extern void __default_sa_restorer (void);
21 extern void __default_rt_sa_restorer (void);
22 
23 #define SET_SA_RESTORER(kact, act)				\
24  ({								\
25    if ((kact)->sa_flags & SA_RESTORER)				\
26      (kact)->sa_restorer = (act)->sa_restorer;			\
27    else								\
28      {								\
29        (kact)->sa_restorer = ((kact)->sa_flags & SA_SIGINFO)	\
30 			     ? __default_rt_sa_restorer		\
31 			     : __default_sa_restorer;		\
32        (kact)->sa_flags |= SA_RESTORER;				\
33      }								\
34  })
35 
36 #define RESET_SA_RESTORER(act, kact)				\
37   (act)->sa_restorer = (kact)->sa_restorer;
38 
39 #include <sysdeps/unix/sysv/linux/libc_sigaction.c>
40