Lines Matching refs:new_thread

59 	struct pthread *curthread, *new_thread;  in _pthread_create()  local
80 if ((new_thread = _thr_alloc(curthread)) == NULL) in _pthread_create()
87 new_thread->attr = _pthread_attr_default; in _pthread_create()
89 new_thread->attr = *(*attr); in _pthread_create()
90 cpusetp = new_thread->attr.cpuset; in _pthread_create()
91 cpusetsize = new_thread->attr.cpusetsize; in _pthread_create()
92 new_thread->attr.cpuset = NULL; in _pthread_create()
93 new_thread->attr.cpusetsize = 0; in _pthread_create()
95 if (new_thread->attr.sched_inherit == PTHREAD_INHERIT_SCHED) { in _pthread_create()
98 new_thread->attr.flags |= PTHREAD_SCOPE_SYSTEM; in _pthread_create()
100 new_thread->attr.flags &= ~PTHREAD_SCOPE_SYSTEM; in _pthread_create()
102 new_thread->attr.prio = curthread->attr.prio; in _pthread_create()
103 new_thread->attr.sched_policy = curthread->attr.sched_policy; in _pthread_create()
106 new_thread->tid = TID_TERMINATED; in _pthread_create()
109 if (create_stack(&new_thread->attr) != 0) { in _pthread_create()
111 _thr_free(curthread, new_thread); in _pthread_create()
118 new_thread->magic = THR_MAGIC; in _pthread_create()
119 new_thread->start_routine = start_routine; in _pthread_create()
120 new_thread->arg = arg; in _pthread_create()
121 new_thread->cancel_enable = 1; in _pthread_create()
122 new_thread->cancel_async = 0; in _pthread_create()
125 TAILQ_INIT(&new_thread->mq[i]); in _pthread_create()
128 if (new_thread->attr.suspend == THR_CREATE_SUSPENDED) { in _pthread_create()
129 new_thread->flags = THR_FLAGS_NEED_SUSPEND; in _pthread_create()
135 new_thread->state = PS_RUNNING; in _pthread_create()
137 if (new_thread->attr.flags & PTHREAD_CREATE_DETACHED) in _pthread_create()
138 new_thread->flags |= THR_FLAGS_DETACHED; in _pthread_create()
141 new_thread->refcount = 1; in _pthread_create()
142 _thr_link(curthread, new_thread); in _pthread_create()
149 _thr_stack_fix_protection(new_thread); in _pthread_create()
152 (*thread) = new_thread; in _pthread_create()
154 THR_THREAD_LOCK(curthread, new_thread); in _pthread_create()
159 param.arg = new_thread; in _pthread_create()
160 param.stack_base = new_thread->attr.stackaddr_attr; in _pthread_create()
161 param.stack_size = new_thread->attr.stacksize_attr; in _pthread_create()
162 param.tls_base = (char *)new_thread->tcb; in _pthread_create()
164 param.child_tid = &new_thread->tid; in _pthread_create()
165 param.parent_tid = &new_thread->tid; in _pthread_create()
167 if (new_thread->attr.flags & PTHREAD_SCOPE_SYSTEM) in _pthread_create()
169 if (new_thread->attr.sched_inherit == PTHREAD_INHERIT_SCHED) in _pthread_create()
172 sched_param.sched_priority = new_thread->attr.prio; in _pthread_create()
173 _schedparam_to_rtp(new_thread->attr.sched_policy, in _pthread_create()
183 new_thread->sigmask = oset; in _pthread_create()
184 SIGDELSET(new_thread->sigmask, SIGCANCEL); in _pthread_create()
203 THR_THREAD_LOCK(curthread, new_thread); in _pthread_create()
204 new_thread->state = PS_DEAD; in _pthread_create()
205 new_thread->tid = TID_TERMINATED; in _pthread_create()
206 new_thread->flags |= THR_FLAGS_DETACHED; in _pthread_create()
207 new_thread->refcount--; in _pthread_create()
208 if (new_thread->flags & THR_FLAGS_NEED_SUSPEND) { in _pthread_create()
209 new_thread->cycle++; in _pthread_create()
210 _thr_umtx_wake(&new_thread->cycle, INT_MAX, 0); in _pthread_create()
212 _thr_try_gc(curthread, new_thread); /* thread lock released */ in _pthread_create()
217 TID(new_thread), cpusetsize, cpusetp)) { in _pthread_create()
220 new_thread->force_exit = 1; in _pthread_create()
221 new_thread->flags |= THR_FLAGS_DETACHED; in _pthread_create()
222 _thr_try_gc(curthread, new_thread); in _pthread_create()
228 _thr_report_creation(curthread, new_thread); in _pthread_create()
229 THR_THREAD_UNLOCK(curthread, new_thread); in _pthread_create()