c->__routine(c->__arg);
{ #if _STACK_GROWS_DOWN if ((char *) c <= currentframe) break; #elif _STACK_GROWS_UP if ((char *) c >= currentframe) break; #else # error "Define either _STACK_GROWS_DOWN or _STACK_GROWS_UP" #endif c->__routine(c->__arg); }
void __pthread_perform_cleanup(void){  pthread_descr self = thread_self();  struct _pthread_cleanup_buffer * c;  for (c = THREAD_GETMEM(self, p_cleanup); c != NULL; c = c->__prev)    c->__routine(c->__arg);  /* And the TSD which needs special help.  */  if (THREAD_GETMEM(self, p_libc_specific[_LIBC_TSD_KEY_RPC_VARS]) != NULL)    __rpc_thread_destroy ();}