github.com/afumu/libc@v0.0.6/musl/src/signal/block.c (about)

     1  #include "pthread_impl.h"
     2  #include "syscall.h"
     3  #include <signal.h>
     4  
     5  static const unsigned long all_mask[] = {
     6  #if ULONG_MAX == 0xffffffff && _NSIG == 129
     7  	-1UL, -1UL, -1UL, -1UL
     8  #elif ULONG_MAX == 0xffffffff
     9  	-1UL, -1UL
    10  #else
    11  	-1UL
    12  #endif
    13  };
    14  
    15  static const unsigned long app_mask[] = {
    16  #if ULONG_MAX == 0xffffffff
    17  #if _NSIG == 65
    18  	0x7fffffff, 0xfffffffc
    19  #else
    20  	0x7fffffff, 0xfffffffc, -1UL, -1UL
    21  #endif
    22  #else
    23  #if _NSIG == 65
    24  	0xfffffffc7fffffff
    25  #else
    26  	0xfffffffc7fffffff, -1UL
    27  #endif
    28  #endif
    29  };
    30  
    31  void __block_all_sigs(void *set)
    32  {
    33  	__syscall(SYS_rt_sigprocmask, SIG_BLOCK, &all_mask, set, _NSIG/8);
    34  }
    35  
    36  void __block_app_sigs(void *set)
    37  {
    38  	__syscall(SYS_rt_sigprocmask, SIG_BLOCK, &app_mask, set, _NSIG/8);
    39  }
    40  
    41  void __restore_sigs(void *set)
    42  {
    43  	__syscall(SYS_rt_sigprocmask, SIG_SETMASK, set, 0, _NSIG/8);
    44  }