pthread_attr_setstack() returns zero after completing successfully. Any other return value indicates that an error occurred. If the following condition occurs, the function fails and returns the corresponding value.
EINVAL
Description:The value of base or tattr is incorrect. The value of stacksize is less than PTHREAD_STACK_MIN.
The following example shows how to create a thread with a custom stack address and size.
#include <pthread.h> pthread_attr_t tattr; pthread_t tid; int ret; void *stackbase; size_t size; /* initialized with default attributes */ ret = pthread_attr_init(&tattr); /* setting the base address and size of the stack */ ret = pthread_attr_setstack(&tattr, stackbase,size); /* address and size specified */ ret = pthread_create(&tid, &tattr, func, arg);