clean up and reduce size of internal pthread structure
[musl] / src / internal / pthread_impl.h
index 0a65fa3..fc2def6 100644 (file)
@@ -19,16 +19,21 @@ struct pthread {
        void **dtv, *unused1, *unused2;
        uintptr_t sysinfo;
        uintptr_t canary, canary2;
-       pid_t tid, pid;
 
        /* Part 2 -- implementation details, non-ABI. */
-       int tsd_used, errno_val;
-       volatile int cancel, canceldisable, cancelasync;
+       int tid;
+       int errno_val;
        volatile int detach_state;
+       volatile int cancel;
+       volatile unsigned char canceldisable, cancelasync;
+       unsigned char tsd_used:1;
+       unsigned char unblock_cancel:1;
+       unsigned char dlerror_flag:1;
        unsigned char *map_base;
        size_t map_size;
        void *stack;
        size_t stack_size;
+       size_t guard_size;
        void *start_arg;
        void *(*start)(void *);
        void *result;
@@ -39,16 +44,13 @@ struct pthread {
                long off;
                volatile void *volatile pending;
        } robust_list;
-       int unblock_cancel;
        volatile int timer_id;
        locale_t locale;
        volatile int killlock[1];
-       volatile int startlock[2];
+       volatile int startlock[1];
        unsigned long sigmask[_NSIG/8/sizeof(long)];
        char *dlerror_buf;
-       int dlerror_flag;
        void *stdio_locks;
-       size_t guard_size;
 
        /* Part 3 -- the positions of these fields relative to
         * the end of the structure is external and internal ABI. */