list_add (&stack->header.data.list, &stack_cache);
list_add (&stack->list, &stack_cache);
queue_stack (struct pthread *stack){  /* We unconditionally add the stack to the list.  The memory may     still be in use but it will not be reused until the kernel marks     the stack as not used anymore.  */  list_add (&stack->header.data.list, &stack_cache);  stack_cache_actsize += stack->stackblock_size;  if (__builtin_expect (stack_cache_actsize > stack_cache_maxsize, 0))    {      /* We reduce the size of the cache.  Remove the last entries	 until the size is below the limit.  */      list_t *entry;      list_t *prev;      /* Search from the end of the list.  */      list_for_each_prev_safe (entry, prev, &stack_cache)	{	  struct pthread *curr;	  curr = list_entry (entry, struct pthread, header.data.list);	  if (FREE_P (curr))	    {	      /* Unlink the block.  */	      list_del (entry);	      /* Account for the freed memory.  */	      stack_cache_actsize -= curr->stackblock_size;	      /* Free the memory associated with the ELF TLS.  */	      _dl_deallocate_tls (curr, false);	      /* Remove this block.  This should never fail.  If it		 does something is really wrong.  */	      if (munmap (curr->stackblock, curr->stackblock_size) != 0)		abort ();	      /* Maybe we have freed enough.  */	      if (stack_cache_actsize <= stack_cache_maxsize)		break;	    }	}    }}