(root)/
glibc-2.38/
sysdeps/
unix/
sysv/
linux/
arm/
libc_sigaction.c
       1  /* Copyright (C) 1997-2023 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>