#define _GNU_SOURCE #include #include #include void *start(void *p) { for (;;) pause(); } void printstack(pthread_attr_t *a) { void *base; size_t size; pthread_attr_getstack(a, &base, &size); printf("%p - %p (%zu)\n", base, (char *)base+size, size); } char buf[12345]; int main() { pthread_t td; pthread_attr_t a; pthread_attr_init(&a); pthread_attr_setstack(&a, buf, sizeof buf); printf("buf = %p\n", buf); pthread_create(&td, &a, start, 0); pthread_getattr_np(td, &a); printstack(&a); pthread_getattr_np(pthread_self(), &a); printstack(&a); }