#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);
#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. */
/* 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. */
-# 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
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);