Add ATTR_FLAG_THR_CREATE flag (used by thr_create)
authorDavid Bartley <dtbartle@maltodextrin.csclub.uwaterloo.ca>
Thu, 21 Aug 2008 05:07:43 +0000 (05:07 +0000)
committerDavid Bartley <dtbartle@maltodextrin.csclub.uwaterloo.ca>
Thu, 21 Aug 2008 05:07:43 +0000 (05:07 +0000)
nptl/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/createthread.c
nptl/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/internaltypes.h
nptl/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/pthreaddef.h
nptl/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/thr_create.c

index 4d580cc..7ddaf9c 100644 (file)
@@ -29,6 +29,7 @@
 #include <sys/segments.h>
 #include <inline-syscall.h>
 #include <sched_priv.h>
 #include <sys/segments.h>
 #include <inline-syscall.h>
 #include <sched_priv.h>
+#include <createthread_arch.c>
 
 DECLARE_INLINE_SYSCALL (int, lwp_create, ucontext_t *ucp, int flags,
     pthread_t *new_lwp);
 
 DECLARE_INLINE_SYSCALL (int, lwp_create, ucontext_t *ucp, int flags,
     pthread_t *new_lwp);
index 6929519..b0e90bf 100644 (file)
@@ -53,6 +53,7 @@ struct pthread_attr
 #define ATTR_FLAG_POLICY_SET           0x0040
 #define ATTR_FLAG_DAEMON               0x0080
 #define ATTR_FLAG_SUSPENDED            0x0100
 #define ATTR_FLAG_POLICY_SET           0x0040
 #define ATTR_FLAG_DAEMON               0x0080
 #define ATTR_FLAG_SUSPENDED            0x0100
+#define ATTR_FLAG_THR_CREATE   0x0200
 
 
 /* Mutex attribute data structure.  */
 
 
 /* Mutex attribute data structure.  */
index 0ff712b..4ce180e 100644 (file)
 
 /* Register atfork handlers to protect signal_lock.  */
 extern void sigaction_atfork (void);
 
 /* Register atfork handlers to protect signal_lock.  */
 extern void sigaction_atfork (void);
-#define PLATFORM_PTHREAD_INIT \
-    sigaction_atfork ();
+#define PLATFORM_PTHREAD_INIT               \
+    sigaction_atfork ();                    \
+    THREAD_SETMEM (pd, main_thread, 1);
 
 /* Additional descr fields.  */
 
 /* Additional descr fields.  */
-# define PLATFORM_DESCR_FIELDS \
-    int sigpipe_disabled;
+# define PLATFORM_DESCR_FIELDS              \
+    int sigpipe_disabled;                   \
+    int main_thread;
 
 /* Use tid as pthread_t (instead of descr).  */
 #define PTHREAD_T_IS_TID
 
 /* Use tid as pthread_t (instead of descr).  */
 #define PTHREAD_T_IS_TID
index ed83bd1..b8bdd3a 100644 (file)
@@ -38,7 +38,7 @@ int thr_create (void *stack_address, size_t stack_size,
   iattr.guardsize = __getpagesize ();
   iattr.stackaddr = stack_address;
   iattr.stacksize = stack_size;
   iattr.guardsize = __getpagesize ();
   iattr.stackaddr = stack_address;
   iattr.stacksize = stack_size;
-  iattr.flags = ATTR_FLAG_STACKADDR |
+  iattr.flags = ATTR_FLAG_STACKADDR | ATTR_FLAG_THR_CREATE |
     ((flags & THR_DETACHED) ? ATTR_FLAG_DETACHSTATE : 0) |
     ((flags & THR_SUSPENDED) ? ATTR_FLAG_SUSPENDED : 0) |
     ((flags & THR_DAEMON) ? ATTR_FLAG_DAEMON : 0);
     ((flags & THR_DETACHED) ? ATTR_FLAG_DETACHSTATE : 0) |
     ((flags & THR_SUSPENDED) ? ATTR_FLAG_SUSPENDED : 0) |
     ((flags & THR_DAEMON) ? ATTR_FLAG_DAEMON : 0);