int pthread_attr_setstack(pthread_attr_t *tattr,void *stackaddr, size_t stacksize);
#include <pthread.h> #include <limits.h> pthread_attr_t tattr; void *base; size_t size; int ret; base = (void *) malloc(PTHREAD_STACK_MIN + 0x4000); /* setting a new address and size */ ret = pthread_attr_setstack(&tattr, base,PTHREAD_STACK_MIN + 0x4000);
stackaddr 属性は、スレッドのスタックのベースを定義します。stacksize 属性は、スタックサイズを指定します。stackaddr にデフォルトの NULL 以外が設定された場合、そのスタックはそのアドレスで初期化されます。このとき、スタックサイズは stacksize とみなされます。
base には、新しいスレッドが使用するスタックのアドレスが含まれます。base が NULL の場合、pthread_create(3C) は新しいスレッドに stacksize バイト以上のスタックを割り当てます。