#define _GNU_SOURCE #include "pthread_impl.h" #include extern size_t __default_stacksize; extern size_t __default_guardsize; int pthread_setattr_default_np(const pthread_attr_t *attrp) { /* Reject anything in the attr object other than stack/guard size. */ pthread_attr_t tmp = *attrp, zero = { 0 }; tmp._a_stacksize = 0; tmp._a_guardsize = 0; if (memcmp(&tmp, &zero, sizeof tmp)) return EINVAL; __inhibit_ptc(); if (attrp->_a_stacksize >= __default_stacksize) __default_stacksize = attrp->_a_stacksize; if (attrp->_a_guardsize >= __default_guardsize) __default_guardsize = attrp->_a_guardsize; __release_ptc(); return 0; } int pthread_getattr_default_np(pthread_attr_t *attrp) { __acquire_ptc(); *attrp = (pthread_attr_t) { ._a_stacksize = __default_stacksize, ._a_guardsize = __default_guardsize, }; __release_ptc(); return 0; }