in src/pthread.c [204:250]
static inline void _pthread_struct_init(pthread_t t, const pthread_attr_t *attrs,
void *stack, size_t stacksize, void *freeaddr, size_t freesize);
#if VARIANT_DYLD
static void _pthread_set_self_dyld(void);
#endif // VARIANT_DYLD
static inline void _pthread_set_self_internal(pthread_t);
static inline void __pthread_started_thread(pthread_t t);
static void _pthread_exit(pthread_t self, void *value_ptr) __dead2;
static inline void _pthread_introspection_thread_create(pthread_t t);
static inline void _pthread_introspection_thread_start(pthread_t t);
static inline void _pthread_introspection_thread_terminate(pthread_t t);
static inline void _pthread_introspection_thread_destroy(pthread_t t);
/*
* Flags filed passed to bsdthread_create and back in pthread_start
* 31 <---------------------------------> 0
* _________________________________________
* | flags(8) | policy(8) | importance(16) |
* -----------------------------------------
*/
#define PTHREAD_START_CUSTOM 0x01000000 // <rdar://problem/34501401>
#define PTHREAD_START_SETSCHED 0x02000000
// was PTHREAD_START_DETACHED 0x04000000
#define PTHREAD_START_QOSCLASS 0x08000000
#define PTHREAD_START_TSD_BASE_SET 0x10000000
#define PTHREAD_START_SUSPENDED 0x20000000
#define PTHREAD_START_QOSCLASS_MASK 0x00ffffff
#define PTHREAD_START_POLICY_BITSHIFT 16
#define PTHREAD_START_POLICY_MASK 0xff
#define PTHREAD_START_IMPORTANCE_MASK 0xffff
#pragma mark pthread attrs
int
pthread_attr_destroy(pthread_attr_t *attr)
{
int ret = EINVAL;
if (attr->sig == _PTHREAD_ATTR_SIG) {
attr->sig = 0;
ret = 0;
}
return ret;
}