Lines Matching refs:new_thread

56 	struct pthread *curthread, *new_thread;  in _pthread_create()  local
77 if ((new_thread = _thr_alloc(curthread)) == NULL) in _pthread_create()
84 new_thread->attr = _pthread_attr_default; in _pthread_create()
86 new_thread->attr = *(*attr); in _pthread_create()
87 cpusetp = new_thread->attr.cpuset; in _pthread_create()
88 cpusetsize = new_thread->attr.cpusetsize; in _pthread_create()
89 new_thread->attr.cpuset = NULL; in _pthread_create()
90 new_thread->attr.cpusetsize = 0; in _pthread_create()
92 if (new_thread->attr.sched_inherit == PTHREAD_INHERIT_SCHED) { in _pthread_create()
95 new_thread->attr.flags |= PTHREAD_SCOPE_SYSTEM; in _pthread_create()
97 new_thread->attr.flags &= ~PTHREAD_SCOPE_SYSTEM; in _pthread_create()
99 new_thread->attr.prio = curthread->attr.prio; in _pthread_create()
100 new_thread->attr.sched_policy = curthread->attr.sched_policy; in _pthread_create()
103 new_thread->tid = TID_TERMINATED; in _pthread_create()
106 if (create_stack(&new_thread->attr) != 0) { in _pthread_create()
108 _thr_free(curthread, new_thread); in _pthread_create()
115 new_thread->magic = THR_MAGIC; in _pthread_create()
116 new_thread->start_routine = start_routine; in _pthread_create()
117 new_thread->arg = arg; in _pthread_create()
118 new_thread->cancel_enable = 1; in _pthread_create()
119 new_thread->cancel_async = 0; in _pthread_create()
122 TAILQ_INIT(&new_thread->mq[i]); in _pthread_create()
125 if (new_thread->attr.suspend == THR_CREATE_SUSPENDED) { in _pthread_create()
126 new_thread->flags = THR_FLAGS_NEED_SUSPEND; in _pthread_create()
132 new_thread->state = PS_RUNNING; in _pthread_create()
134 if (new_thread->attr.flags & PTHREAD_CREATE_DETACHED) in _pthread_create()
135 new_thread->flags |= THR_FLAGS_DETACHED; in _pthread_create()
138 new_thread->refcount = 1; in _pthread_create()
139 _thr_link(curthread, new_thread); in _pthread_create()
146 _thr_stack_fix_protection(new_thread); in _pthread_create()
149 *thread = new_thread; in _pthread_create()
151 THR_THREAD_LOCK(curthread, new_thread); in _pthread_create()
156 param.arg = new_thread; in _pthread_create()
157 param.stack_base = new_thread->attr.stackaddr_attr; in _pthread_create()
158 param.stack_size = new_thread->attr.stacksize_attr; in _pthread_create()
159 param.tls_base = (char *)new_thread->tcb; in _pthread_create()
161 param.child_tid = &new_thread->tid; in _pthread_create()
162 param.parent_tid = &new_thread->tid; in _pthread_create()
164 if (new_thread->attr.flags & PTHREAD_SCOPE_SYSTEM) in _pthread_create()
166 if (new_thread->attr.sched_inherit == PTHREAD_INHERIT_SCHED) in _pthread_create()
169 sched_param.sched_priority = new_thread->attr.prio; in _pthread_create()
170 _schedparam_to_rtp(new_thread->attr.sched_policy, in _pthread_create()
180 new_thread->sigmask = oset; in _pthread_create()
181 SIGDELSET(new_thread->sigmask, SIGCANCEL); in _pthread_create()
200 THR_THREAD_LOCK(curthread, new_thread); in _pthread_create()
201 new_thread->state = PS_DEAD; in _pthread_create()
202 new_thread->tid = TID_TERMINATED; in _pthread_create()
203 new_thread->flags |= THR_FLAGS_DETACHED; in _pthread_create()
204 new_thread->refcount--; in _pthread_create()
205 if (new_thread->flags & THR_FLAGS_NEED_SUSPEND) { in _pthread_create()
206 new_thread->cycle++; in _pthread_create()
207 _thr_umtx_wake(&new_thread->cycle, INT_MAX, 0); in _pthread_create()
209 _thr_try_gc(curthread, new_thread); /* thread lock released */ in _pthread_create()
214 TID(new_thread), cpusetsize, cpusetp)) { in _pthread_create()
217 new_thread->force_exit = 1; in _pthread_create()
218 new_thread->flags |= THR_FLAGS_DETACHED; in _pthread_create()
219 _thr_try_gc(curthread, new_thread); in _pthread_create()
225 _thr_report_creation(curthread, new_thread); in _pthread_create()
226 THR_THREAD_UNLOCK(curthread, new_thread); in _pthread_create()