if (__builtin_expect (__pthread_manager_request, 0) >= 0) { struct pthread_request request; pthread_descr self = thread_self();
sigset_t mask;
weak_alias (__pthread_yield, pthread_yield)/* Process-wide exit() request */static void pthread_onexit_process(int retcode, void *arg){  if (__builtin_expect (__pthread_manager_request, 0) >= 0) {    struct pthread_request request;    pthread_descr self = thread_self();    request.req_thread = self;    request.req_kind = REQ_PROCESS_EXIT;    request.req_args.exit.code = retcode;    TEMP_FAILURE_RETRY(__libc_write(__pthread_manager_request,				    (char *) &request, sizeof(request)));    suspend(self);    /* Main thread should accumulate times for thread manager and its       children, so that timings for main thread account for all threads. */    if (self == __pthread_main_thread)      {#ifdef USE_TLS	waitpid(manager_thread->p_pid, NULL, __WCLONE);#else	waitpid(__pthread_manager_thread.p_pid, NULL, __WCLONE);#endif	/* Since all threads have been asynchronously terminated           (possibly holding locks), free cannot be used any more.  */	/*free (__pthread_manager_thread_bos);*/	__pthread_manager_thread_bos = __pthread_manager_thread_tos = NULL;      }  }}