sa.sa_handler = __pthread_sighandler;
sa.sa_handler = pthread_handle_sigrestart;
static void pthread_initialize(void){  struct sigaction sa;  sigset_t mask;  /* If already done (e.g. by a constructor called earlier!), bail out */  if (__pthread_initial_thread_bos != NULL) return;  /* For the initial stack, reserve at least STACK_SIZE bytes of stack     below the current stack address, and align that on a     STACK_SIZE boundary. */  __pthread_initial_thread_bos =    (char *)(((long)CURRENT_STACK_FRAME - 2 * STACK_SIZE) & ~(STACK_SIZE - 1));  /* Update the descriptor for the initial thread. */  __pthread_initial_thread.p_pid = __getpid();  /* If we have special thread_self processing, initialize that for the     main thread now.  */#ifdef INIT_THREAD_SELF  INIT_THREAD_SELF(&__pthread_initial_thread);#endif  /* The errno/h_errno variable of the main thread are the global ones.  */  __pthread_initial_thread.p_errnop = &_errno;  __pthread_initial_thread.p_h_errnop = &_h_errno;#ifdef SIGRTMIN  /* Allocate the signals used.  */  __pthread_sig_restart = __libc_allocate_rtsig (1);  __pthread_sig_cancel = __libc_allocate_rtsig (1);  if (__pthread_sig_restart < 0 || __pthread_sig_cancel < 0)    {      /* The kernel does not support real-time signals.  Use as before	 the available signals in the fixed set.  */      __pthread_sig_restart = SIGUSR1;      __pthread_sig_cancel = SIGUSR2;    }#endif  /* Setup signal handlers for the initial thread.     Since signal handlers are shared between threads, these settings     will be inherited by all other threads. */  sa.sa_handler = __pthread_sighandler;  sigemptyset(&sa.sa_mask);  sa.sa_flags = SA_RESTART; /* does not matter for regular threads, but                               better for the thread manager */  sigaction(PTHREAD_SIG_RESTART, &sa, NULL);  sa.sa_handler = pthread_handle_sigcancel;  sa.sa_flags = 0;  sigaction(PTHREAD_SIG_CANCEL, &sa, NULL);  /* Initially, block PTHREAD_SIG_RESTART. Will be unblocked on demand. */  sigemptyset(&mask);  sigaddset(&mask, PTHREAD_SIG_RESTART);  sigprocmask(SIG_BLOCK, &mask, NULL);  /* Register an exit function to kill all other threads. */  /* Do it early so that user-registered atexit functions are called     before pthread_exit_process. */  __on_exit(pthread_exit_process, NULL);}