Lines Matching refs:stack
27 struct stack *
32 struct stack *stack; local
40 if ((stack = SLIST_FIRST(&_stackq)) != NULL) {
44 return stack;
51 stack = (struct stack *)malloc(sizeof (struct stack));
52 if (stack == NULL)
57 stack->base = base;
58 stack->size = size;
59 stack->redzone = NULL;
60 stack->storage = NULL;
61 return stack;
65 stack->storage = malloc(size + nbpg * 2);
66 if (stack->storage == NULL) {
67 free(stack);
79 stack->redzone = (void *)(((ptrdiff_t)stack->storage +
81 stack->base = (caddr_t)stack->storage;
82 stack->size = size;
85 stack->redzone = (void *)(((ptrdiff_t)stack->storage +
87 stack->base = (caddr_t)stack->redzone + nbpg;
88 stack->size = size;
90 if (mprotect(stack->redzone, nbpg, 0) == -1)
93 return stack;
97 _thread_stack_free(stack) in _thread_stack_free() argument
98 struct stack *stack; in _thread_stack_free()
103 if (stack->storage != NULL && stack->size == PTHREAD_STACK_DEFAULT)
104 SLIST_INSERT_HEAD(&_stackq, stack, qe);
107 if (stack->redzone)
108 mprotect(stack->redzone, nbpg,
112 if (stack->storage)
113 free(stack->storage);
116 free(stack);