Lines Matching defs:curthread
80 static void mutex_init_robust(struct pthread *curthread);
143 mutex_assert_not_owned(struct pthread *curthread __unused,
154 (is_pshared_mutex(m) && curthread->robust_list ==
156 (!is_pshared_mutex(m) && curthread->priv_robust_list ==
161 m->m_rb_prev, (void *)curthread->robust_list,
162 (void *)curthread->priv_robust_list);
181 _mutex_enter_robust(struct pthread *curthread, struct pthread_mutex *m)
185 if (__predict_false(curthread->inact_mtx != 0))
191 mutex_init_robust(curthread);
192 curthread->inact_mtx = (uintptr_t)&m->m_lock;
197 _mutex_leave_robust(struct pthread *curthread, struct pthread_mutex *m __unused)
201 if (__predict_false(curthread->inact_mtx != (uintptr_t)&m->m_lock))
204 curthread->inact_mtx = 0;
221 mutex_init_robust(struct pthread *curthread)
225 if (curthread == NULL)
226 curthread = _get_curthread();
227 if (curthread->robust_inited)
229 rb.robust_list_offset = (uintptr_t)&curthread->robust_list;
230 rb.robust_priv_list_offset = (uintptr_t)&curthread->priv_robust_list;
231 rb.robust_inact_offset = (uintptr_t)&curthread->inact_mtx;
233 curthread->robust_inited = 1;
320 set_inherited_priority(struct pthread *curthread, struct pthread_mutex *m)
324 m2 = TAILQ_LAST(&curthread->mq[mutex_qidx(m)], mutex_queue);
436 queue_fork(struct pthread *curthread, struct mutex_queue *q,
444 m->m_lock.m_owner = TID(curthread) | bit;
449 _mutex_fork(struct pthread *curthread)
452 queue_fork(curthread, &curthread->mq[TMQ_NORM],
453 &curthread->mq[TMQ_NORM_PRIV], 0);
454 queue_fork(curthread, &curthread->mq[TMQ_NORM_PP],
455 &curthread->mq[TMQ_NORM_PP_PRIV], UMUTEX_CONTESTED);
456 queue_fork(curthread, &curthread->mq[TMQ_ROBUST_PP],
457 &curthread->mq[TMQ_ROBUST_PP_PRIV], UMUTEX_CONTESTED);
458 curthread->robust_list = 0;
522 enqueue_mutex(struct pthread *curthread, struct pthread_mutex *m,
531 mutex_assert_not_owned(curthread, m);
533 TAILQ_INSERT_TAIL(&curthread->mq[qidx], m, m_qe);
535 TAILQ_INSERT_TAIL(&curthread->mq[qidx + 1], m, m_pqe);
537 rl = is_pshared_mutex(m) ? &curthread->robust_list :
538 &curthread->priv_robust_list;
554 dequeue_mutex(struct pthread *curthread, struct pthread_mutex *m)
565 curthread->robust_list = m->m_lock.m_rb_lnk;
567 curthread->priv_robust_list =
581 TAILQ_REMOVE(&curthread->mq[qidx], m, m_qe);
583 TAILQ_REMOVE(&curthread->mq[qidx + 1], m, m_pqe);
585 set_inherited_priority(curthread, m);
617 struct pthread *curthread;
626 curthread = _get_curthread();
627 id = TID(curthread);
629 THR_CRITICAL_ENTER(curthread);
630 robust = _mutex_enter_robust(curthread, m);
633 enqueue_mutex(curthread, m, ret);
640 _mutex_leave_robust(curthread, m);
643 THR_CRITICAL_LEAVE(curthread);
648 mutex_lock_sleep(struct pthread *curthread, struct pthread_mutex *m,
654 id = TID(curthread);
708 enqueue_mutex(curthread, m, ret);
719 struct pthread *curthread;
723 curthread = _get_curthread();
725 THR_CRITICAL_ENTER(curthread);
727 robust = _mutex_enter_robust(curthread, m);
728 ret = _thr_umutex_trylock2(&m->m_lock, TID(curthread));
730 enqueue_mutex(curthread, m, ret);
734 ret = mutex_lock_sleep(curthread, m, abstime);
737 _mutex_leave_robust(curthread, m);
740 THR_CRITICAL_LEAVE(curthread);
814 struct pthread *curthread;
816 curthread = _get_curthread();
817 enqueue_mutex(curthread, m, 0);
825 struct pthread *curthread;
828 curthread = _get_curthread();
829 if ((error = _mutex_owned(curthread, mp)) != 0)
837 dequeue_mutex(curthread, mp);
847 _thr_wake_all(curthread->defer_waiters,
848 curthread->nwaiter_defer);
849 curthread->nwaiter_defer = 0;
955 struct pthread *curthread;
965 curthread = _get_curthread();
966 id = TID(curthread);
986 robust = _mutex_enter_robust(curthread, m);
987 dequeue_mutex(curthread, m);
991 _thr_wake_all(curthread->defer_waiters,
992 curthread->nwaiter_defer);
993 curthread->nwaiter_defer = 0;
998 _mutex_leave_robust(curthread, m);
1001 THR_CRITICAL_LEAVE(curthread);
1031 struct pthread *curthread;
1053 curthread = _get_curthread();
1054 if (PMUTEX_OWNER_ID(m) == TID(curthread)) {
1061 q = &curthread->mq[qidx];
1062 qp = &curthread->mq[qidx + 1];
1161 _mutex_owned(struct pthread *curthread, const struct pthread_mutex *mp)
1169 if (PMUTEX_OWNER_ID(mp) != TID(curthread))
1178 struct pthread *curthread;
1190 curthread = _get_curthread();
1194 if (PMUTEX_OWNER_ID(m) != TID(curthread))