1#include "pthread_impl.h" 2#include <string.h> 3 4extern size_t __default_stacksize; 5extern size_t __default_guardsize; 6 7int pthread_setattr_default_np(const pthread_attr_t *attrp) 8{ 9 /* Reject anything in the attr object other than stack/guard size. */ 10 pthread_attr_t tmp = *attrp, zero = { 0 }; 11 tmp._a_stacksize = 0; 12 tmp._a_guardsize = 0; 13 if (memcmp(&tmp, &zero, sizeof tmp)) 14 return EINVAL; 15 16 __inhibit_ptc(); 17 if (attrp->_a_stacksize >= __default_stacksize) 18 __default_stacksize = attrp->_a_stacksize; 19 if (attrp->_a_guardsize >= __default_guardsize) 20 __default_guardsize = attrp->_a_guardsize; 21 __release_ptc(); 22 23 return 0; 24} 25 26int pthread_getattr_default_np(pthread_attr_t *attrp) 27{ 28 __acquire_ptc(); 29 *attrp = (pthread_attr_t) { 30 ._a_stacksize = __default_stacksize, 31 ._a_guardsize = __default_guardsize, 32 }; 33 __release_ptc(); 34 return 0; 35} 36