Lines Matching refs:outer
2126 syncq_t *sq, *outer; in munlink() local
2153 if ((outer = sq->sq_outer) != NULL) { in munlink()
2170 wait_syncq(outer); in munlink()
2514 syncq_t *sq, *outer; in setq() local
2534 outer = sq->sq_outer; in setq()
2535 if (outer != NULL) { in setq()
2536 ASSERT(wq->q_syncq->sq_outer == outer); in setq()
2537 outer_remove(outer, rq->q_syncq); in setq()
2539 outer_remove(outer, wq->q_syncq); in setq()
2644 outer = dmp->dm_sq; in setq()
2646 ASSERT(outer->sq_outer == NULL); in setq()
2647 outer_insert(outer, rq->q_syncq); in setq()
2649 outer_insert(outer, wq->q_syncq); in setq()
3439 syncq_t *sq, *outer; in freeq() local
3471 outer = qp->q_syncq->sq_outer; in freeq()
3472 if (outer != NULL) { in freeq()
3473 outer_remove(outer, qp->q_syncq); in freeq()
3475 outer_remove(outer, wqp->q_syncq); in freeq()
5749 outer_enter(syncq_t *outer, uint16_t flags) in outer_enter() argument
5755 ASSERT(outer->sq_outer == NULL && outer->sq_onext != NULL && in outer_enter()
5756 outer->sq_oprev != NULL); in outer_enter()
5760 mutex_enter(SQLOCK(outer)); in outer_enter()
5761 while (outer->sq_flags & flags) { in outer_enter()
5762 outer->sq_flags |= SQ_WANTWAKEUP; in outer_enter()
5763 cv_wait(&outer->sq_wait, SQLOCK(outer)); in outer_enter()
5766 ASSERT(!(outer->sq_flags & SQ_WRITER)); in outer_enter()
5767 outer->sq_flags |= SQ_WRITER; in outer_enter()
5768 outer->sq_count++; in outer_enter()
5769 ASSERT(outer->sq_count != 0); /* wraparound */ in outer_enter()
5776 for (sq = outer->sq_onext; sq != outer; sq = sq->sq_onext) { in outer_enter()
5787 mutex_exit(SQLOCK(outer)); in outer_enter()
5801 for (sq = outer->sq_onext; sq != outer; sq = sq->sq_onext) { in outer_enter()
5823 mutex_enter(SQLOCK(outer)); in outer_enter()
5824 if (outer->sq_flags & (flags & ~SQ_WRITER)) { in outer_enter()
5825 mutex_exit(SQLOCK(outer)); in outer_enter()
5826 outer_exit(outer); in outer_enter()
5829 mutex_exit(SQLOCK(outer)); in outer_enter()
5839 outer_exit(syncq_t *outer) in outer_exit() argument
5845 ASSERT(outer->sq_outer == NULL && outer->sq_onext != NULL && in outer_exit()
5846 outer->sq_oprev != NULL); in outer_exit()
5847 ASSERT(MUTEX_NOT_HELD(SQLOCK(outer))); in outer_exit()
5857 mutex_enter(SQLOCK(outer)); in outer_exit()
5858 flags = outer->sq_flags; in outer_exit()
5859 ASSERT(outer->sq_flags & SQ_WRITER); in outer_exit()
5861 write_now(outer); in outer_exit()
5862 flags = outer->sq_flags; in outer_exit()
5872 for (sq = outer->sq_onext; sq != outer; sq = sq->sq_onext) in outer_exit()
5874 ASSERT(!(outer->sq_flags & SQ_QUEUED)); in outer_exit()
5877 outer->sq_flags = flags; in outer_exit()
5878 mutex_exit(SQLOCK(outer)); in outer_exit()
5879 for (sq = outer->sq_onext; sq != outer; sq = sq->sq_onext) in outer_exit()
5881 mutex_enter(SQLOCK(outer)); in outer_exit()
5882 flags = outer->sq_flags; in outer_exit()
5886 cv_broadcast(&outer->sq_wait); in outer_exit()
5888 outer->sq_flags = flags; in outer_exit()
5889 ASSERT(outer->sq_count > 0); in outer_exit()
5890 outer->sq_count--; in outer_exit()
5891 mutex_exit(SQLOCK(outer)); in outer_exit()
5903 outer_insert(syncq_t *outer, syncq_t *sq) in outer_insert() argument
5905 ASSERT(outer->sq_outer == NULL && outer->sq_onext != NULL && in outer_insert()
5906 outer->sq_oprev != NULL); in outer_insert()
5911 blocksq(outer, SQ_BLOCKED, 0); in outer_insert()
5912 ASSERT(outer->sq_flags & SQ_BLOCKED); in outer_insert()
5913 ASSERT(!(outer->sq_flags & SQ_WRITER)); in outer_insert()
5916 sq->sq_outer = outer; in outer_insert()
5917 outer->sq_onext->sq_oprev = sq; in outer_insert()
5918 sq->sq_onext = outer->sq_onext; in outer_insert()
5919 outer->sq_onext = sq; in outer_insert()
5920 sq->sq_oprev = outer; in outer_insert()
5922 unblocksq(outer, SQ_BLOCKED, 1); in outer_insert()
5934 outer_remove(syncq_t *outer, syncq_t *sq) in outer_remove() argument
5936 ASSERT(outer->sq_outer == NULL && outer->sq_onext != NULL && in outer_remove()
5937 outer->sq_oprev != NULL); in outer_remove()
5938 ASSERT(sq->sq_outer == outer); in outer_remove()
5941 blocksq(outer, SQ_BLOCKED, 0); in outer_remove()
5942 ASSERT(outer->sq_flags & SQ_BLOCKED); in outer_remove()
5943 ASSERT(!(outer->sq_flags & SQ_WRITER)); in outer_remove()
5951 unblocksq(outer, SQ_BLOCKED, 1); in outer_remove()
5965 queue_writer(syncq_t *outer, void (*func)(), queue_t *q, mblk_t *mp) in queue_writer() argument
5967 ASSERT(MUTEX_HELD(SQLOCK(outer))); in queue_writer()
5972 outer->sq_count++; /* Decremented when dequeued */ in queue_writer()
5973 ASSERT(outer->sq_count != 0); /* Wraparound */ in queue_writer()
5974 if (outer->sq_evhead == NULL) { in queue_writer()
5976 outer->sq_evhead = outer->sq_evtail = mp; in queue_writer()
5977 outer->sq_flags |= SQ_EVENTS; in queue_writer()
5978 mutex_exit(SQLOCK(outer)); in queue_writer()
5981 (task_func_t *)qwriter_outer_service, outer, TQ_SLEEP); in queue_writer()
5983 ASSERT(outer->sq_flags & SQ_EVENTS); in queue_writer()
5984 outer->sq_evtail->b_next = mp; in queue_writer()
5985 outer->sq_evtail = mp; in queue_writer()
5986 mutex_exit(SQLOCK(outer)); in queue_writer()
6003 syncq_t *osq, *sq, *outer; in qwriter_outer() local
6008 outer = osq->sq_outer; in qwriter_outer()
6009 if (outer == NULL) in qwriter_outer()
6011 ASSERT(outer->sq_outer == NULL && outer->sq_onext != NULL && in qwriter_outer()
6012 outer->sq_oprev != NULL); in qwriter_outer()
6014 mutex_enter(SQLOCK(outer)); in qwriter_outer()
6015 flags = outer->sq_flags; in qwriter_outer()
6049 queue_writer(outer, func, q, mp); in qwriter_outer()
6057 outer->sq_count++; in qwriter_outer()
6058 ASSERT(outer->sq_count != 0); /* wraparound */ in qwriter_outer()
6070 for (sq = outer->sq_onext; sq != outer; sq = sq->sq_onext) { in qwriter_outer()
6097 outer->sq_flags = flags; in qwriter_outer()
6098 queue_writer(outer, func, q, mp); in qwriter_outer()
6100 mutex_enter(SQLOCK(outer)); in qwriter_outer()
6101 ASSERT(outer->sq_count > 0); in qwriter_outer()
6102 outer->sq_count--; in qwriter_outer()
6103 ASSERT(outer->sq_flags & SQ_WRITER); in qwriter_outer()
6104 flags = outer->sq_flags; in qwriter_outer()
6108 cv_broadcast(&outer->sq_wait); in qwriter_outer()
6110 outer->sq_flags = flags; in qwriter_outer()
6111 mutex_exit(SQLOCK(outer)); in qwriter_outer()
6114 outer->sq_flags = flags; in qwriter_outer()
6115 mutex_exit(SQLOCK(outer)); in qwriter_outer()
6121 outer_exit(outer); in qwriter_outer()
6128 write_now(syncq_t *outer) in write_now() argument
6134 ASSERT(MUTEX_HELD(SQLOCK(outer))); in write_now()
6135 ASSERT(outer->sq_outer == NULL && outer->sq_onext != NULL && in write_now()
6136 outer->sq_oprev != NULL); in write_now()
6137 while ((mp = outer->sq_evhead) != NULL) { in write_now()
6142 ASSERT(!(outer->sq_flags & SQ_MESSAGES)); in write_now()
6143 ASSERT((outer->sq_flags & SQ_EVENTS)); in write_now()
6145 outer->sq_evhead = mp->b_next; in write_now()
6146 if (outer->sq_evhead == NULL) { in write_now()
6147 outer->sq_evtail = NULL; in write_now()
6148 outer->sq_flags &= ~SQ_EVENTS; in write_now()
6150 ASSERT(outer->sq_count != 0); in write_now()
6151 outer->sq_count--; /* Incremented when enqueued. */ in write_now()
6152 mutex_exit(SQLOCK(outer)); in write_now()
6169 mutex_enter(SQLOCK(outer)); in write_now()
6171 ASSERT(MUTEX_HELD(SQLOCK(outer))); in write_now()
8331 qwriter_outer_service(syncq_t *outer) in qwriter_outer_service() argument
8338 outer_enter(outer, SQ_BLOCKED|SQ_WRITER); in qwriter_outer_service()
8347 outer_exit(outer); in qwriter_outer_service()