Lines Matching refs:new_thread

59 	struct pthread *curthread, *new_thread;  in _pthread_create()  local
81 if ((new_thread = _thr_alloc(curthread)) == NULL) in _pthread_create()
88 new_thread->attr = _pthread_attr_default; in _pthread_create()
90 new_thread->attr = *(*attr); in _pthread_create()
91 cpusetp = new_thread->attr.cpuset; in _pthread_create()
92 cpusetsize = new_thread->attr.cpusetsize; in _pthread_create()
93 new_thread->attr.cpuset = NULL; in _pthread_create()
94 new_thread->attr.cpusetsize = 0; in _pthread_create()
96 if (new_thread->attr.sched_inherit == PTHREAD_INHERIT_SCHED) { in _pthread_create()
99 new_thread->attr.flags |= PTHREAD_SCOPE_SYSTEM; in _pthread_create()
101 new_thread->attr.flags &= ~PTHREAD_SCOPE_SYSTEM; in _pthread_create()
103 new_thread->attr.prio = curthread->attr.prio; in _pthread_create()
104 new_thread->attr.sched_policy = curthread->attr.sched_policy; in _pthread_create()
107 new_thread->tid = TID_TERMINATED; in _pthread_create()
110 if (create_stack(&new_thread->attr) != 0) { in _pthread_create()
112 _thr_free(curthread, new_thread); in _pthread_create()
119 new_thread->magic = THR_MAGIC; in _pthread_create()
120 new_thread->start_routine = start_routine; in _pthread_create()
121 new_thread->arg = arg; in _pthread_create()
122 new_thread->cancel_enable = 1; in _pthread_create()
123 new_thread->cancel_async = 0; in _pthread_create()
126 TAILQ_INIT(&new_thread->mq[i]); in _pthread_create()
129 if (new_thread->attr.suspend == THR_CREATE_SUSPENDED) { in _pthread_create()
130 new_thread->flags = THR_FLAGS_NEED_SUSPEND; in _pthread_create()
136 new_thread->state = PS_RUNNING; in _pthread_create()
138 if (new_thread->attr.flags & PTHREAD_CREATE_DETACHED) in _pthread_create()
139 new_thread->flags |= THR_FLAGS_DETACHED; in _pthread_create()
142 new_thread->refcount = 1; in _pthread_create()
143 _thr_link(curthread, new_thread); in _pthread_create()
150 _thr_stack_fix_protection(new_thread); in _pthread_create()
153 (*thread) = new_thread; in _pthread_create()
155 THR_THREAD_LOCK(curthread, new_thread); in _pthread_create()
160 param.arg = new_thread; in _pthread_create()
161 param.stack_base = new_thread->attr.stackaddr_attr; in _pthread_create()
162 param.stack_size = new_thread->attr.stacksize_attr; in _pthread_create()
163 param.tls_base = (char *)new_thread->tcb; in _pthread_create()
165 param.child_tid = &new_thread->tid; in _pthread_create()
166 param.parent_tid = &new_thread->tid; in _pthread_create()
168 if (new_thread->attr.flags & PTHREAD_SCOPE_SYSTEM) in _pthread_create()
170 if (new_thread->attr.sched_inherit == PTHREAD_INHERIT_SCHED) in _pthread_create()
173 sched_param.sched_priority = new_thread->attr.prio; in _pthread_create()
174 _schedparam_to_rtp(new_thread->attr.sched_policy, in _pthread_create()
184 new_thread->sigmask = oset; in _pthread_create()
185 SIGDELSET(new_thread->sigmask, SIGCANCEL); in _pthread_create()
204 THR_THREAD_LOCK(curthread, new_thread); in _pthread_create()
205 new_thread->state = PS_DEAD; in _pthread_create()
206 new_thread->tid = TID_TERMINATED; in _pthread_create()
207 new_thread->flags |= THR_FLAGS_DETACHED; in _pthread_create()
208 new_thread->refcount--; in _pthread_create()
209 if (new_thread->flags & THR_FLAGS_NEED_SUSPEND) { in _pthread_create()
210 new_thread->cycle++; in _pthread_create()
211 _thr_umtx_wake(&new_thread->cycle, INT_MAX, 0); in _pthread_create()
213 _thr_try_gc(curthread, new_thread); /* thread lock released */ in _pthread_create()
218 TID(new_thread), cpusetsize, cpusetp)) { in _pthread_create()
221 new_thread->force_exit = 1; in _pthread_create()
222 new_thread->flags |= THR_FLAGS_DETACHED; in _pthread_create()
223 _thr_try_gc(curthread, new_thread); in _pthread_create()
229 _thr_report_creation(curthread, new_thread); in _pthread_create()
230 THR_THREAD_UNLOCK(curthread, new_thread); in _pthread_create()