Lines Matching refs:outer
2113 syncq_t *sq, *outer; in munlink() local
2140 if ((outer = sq->sq_outer) != NULL) { in munlink()
2157 wait_syncq(outer); in munlink()
2490 syncq_t *sq, *outer; in setq() local
2510 outer = sq->sq_outer; in setq()
2511 if (outer != NULL) { in setq()
2512 ASSERT(wq->q_syncq->sq_outer == outer); in setq()
2513 outer_remove(outer, rq->q_syncq); in setq()
2515 outer_remove(outer, wq->q_syncq); in setq()
2620 outer = dmp->dm_sq; in setq()
2622 ASSERT(outer->sq_outer == NULL); in setq()
2623 outer_insert(outer, rq->q_syncq); in setq()
2625 outer_insert(outer, wq->q_syncq); in setq()
3415 syncq_t *sq, *outer; in freeq() local
3447 outer = qp->q_syncq->sq_outer; in freeq()
3448 if (outer != NULL) { in freeq()
3449 outer_remove(outer, qp->q_syncq); in freeq()
3451 outer_remove(outer, wqp->q_syncq); in freeq()
5725 outer_enter(syncq_t *outer, uint16_t flags) in outer_enter() argument
5731 ASSERT(outer->sq_outer == NULL && outer->sq_onext != NULL && in outer_enter()
5732 outer->sq_oprev != NULL); in outer_enter()
5736 mutex_enter(SQLOCK(outer)); in outer_enter()
5737 while (outer->sq_flags & flags) { in outer_enter()
5738 outer->sq_flags |= SQ_WANTWAKEUP; in outer_enter()
5739 cv_wait(&outer->sq_wait, SQLOCK(outer)); in outer_enter()
5742 ASSERT(!(outer->sq_flags & SQ_WRITER)); in outer_enter()
5743 outer->sq_flags |= SQ_WRITER; in outer_enter()
5744 outer->sq_count++; in outer_enter()
5745 ASSERT(outer->sq_count != 0); /* wraparound */ in outer_enter()
5752 for (sq = outer->sq_onext; sq != outer; sq = sq->sq_onext) { in outer_enter()
5763 mutex_exit(SQLOCK(outer)); in outer_enter()
5777 for (sq = outer->sq_onext; sq != outer; sq = sq->sq_onext) { in outer_enter()
5799 mutex_enter(SQLOCK(outer)); in outer_enter()
5800 if (outer->sq_flags & (flags & ~SQ_WRITER)) { in outer_enter()
5801 mutex_exit(SQLOCK(outer)); in outer_enter()
5802 outer_exit(outer); in outer_enter()
5805 mutex_exit(SQLOCK(outer)); in outer_enter()
5815 outer_exit(syncq_t *outer) in outer_exit() argument
5821 ASSERT(outer->sq_outer == NULL && outer->sq_onext != NULL && in outer_exit()
5822 outer->sq_oprev != NULL); in outer_exit()
5823 ASSERT(MUTEX_NOT_HELD(SQLOCK(outer))); in outer_exit()
5833 mutex_enter(SQLOCK(outer)); in outer_exit()
5834 flags = outer->sq_flags; in outer_exit()
5835 ASSERT(outer->sq_flags & SQ_WRITER); in outer_exit()
5837 write_now(outer); in outer_exit()
5838 flags = outer->sq_flags; in outer_exit()
5848 for (sq = outer->sq_onext; sq != outer; sq = sq->sq_onext) in outer_exit()
5850 ASSERT(!(outer->sq_flags & SQ_QUEUED)); in outer_exit()
5853 outer->sq_flags = flags; in outer_exit()
5854 mutex_exit(SQLOCK(outer)); in outer_exit()
5855 for (sq = outer->sq_onext; sq != outer; sq = sq->sq_onext) in outer_exit()
5857 mutex_enter(SQLOCK(outer)); in outer_exit()
5858 flags = outer->sq_flags; in outer_exit()
5862 cv_broadcast(&outer->sq_wait); in outer_exit()
5864 outer->sq_flags = flags; in outer_exit()
5865 ASSERT(outer->sq_count > 0); in outer_exit()
5866 outer->sq_count--; in outer_exit()
5867 mutex_exit(SQLOCK(outer)); in outer_exit()
5879 outer_insert(syncq_t *outer, syncq_t *sq) in outer_insert() argument
5881 ASSERT(outer->sq_outer == NULL && outer->sq_onext != NULL && in outer_insert()
5882 outer->sq_oprev != NULL); in outer_insert()
5887 blocksq(outer, SQ_BLOCKED, 0); in outer_insert()
5888 ASSERT(outer->sq_flags & SQ_BLOCKED); in outer_insert()
5889 ASSERT(!(outer->sq_flags & SQ_WRITER)); in outer_insert()
5892 sq->sq_outer = outer; in outer_insert()
5893 outer->sq_onext->sq_oprev = sq; in outer_insert()
5894 sq->sq_onext = outer->sq_onext; in outer_insert()
5895 outer->sq_onext = sq; in outer_insert()
5896 sq->sq_oprev = outer; in outer_insert()
5898 unblocksq(outer, SQ_BLOCKED, 1); in outer_insert()
5910 outer_remove(syncq_t *outer, syncq_t *sq) in outer_remove() argument
5912 ASSERT(outer->sq_outer == NULL && outer->sq_onext != NULL && in outer_remove()
5913 outer->sq_oprev != NULL); in outer_remove()
5914 ASSERT(sq->sq_outer == outer); in outer_remove()
5917 blocksq(outer, SQ_BLOCKED, 0); in outer_remove()
5918 ASSERT(outer->sq_flags & SQ_BLOCKED); in outer_remove()
5919 ASSERT(!(outer->sq_flags & SQ_WRITER)); in outer_remove()
5927 unblocksq(outer, SQ_BLOCKED, 1); in outer_remove()
5941 queue_writer(syncq_t *outer, void (*func)(), queue_t *q, mblk_t *mp) in queue_writer() argument
5943 ASSERT(MUTEX_HELD(SQLOCK(outer))); in queue_writer()
5948 outer->sq_count++; /* Decremented when dequeued */ in queue_writer()
5949 ASSERT(outer->sq_count != 0); /* Wraparound */ in queue_writer()
5950 if (outer->sq_evhead == NULL) { in queue_writer()
5952 outer->sq_evhead = outer->sq_evtail = mp; in queue_writer()
5953 outer->sq_flags |= SQ_EVENTS; in queue_writer()
5954 mutex_exit(SQLOCK(outer)); in queue_writer()
5957 (task_func_t *)qwriter_outer_service, outer, TQ_SLEEP); in queue_writer()
5959 ASSERT(outer->sq_flags & SQ_EVENTS); in queue_writer()
5960 outer->sq_evtail->b_next = mp; in queue_writer()
5961 outer->sq_evtail = mp; in queue_writer()
5962 mutex_exit(SQLOCK(outer)); in queue_writer()
5979 syncq_t *osq, *sq, *outer; in qwriter_outer() local
5984 outer = osq->sq_outer; in qwriter_outer()
5985 if (outer == NULL) in qwriter_outer()
5987 ASSERT(outer->sq_outer == NULL && outer->sq_onext != NULL && in qwriter_outer()
5988 outer->sq_oprev != NULL); in qwriter_outer()
5990 mutex_enter(SQLOCK(outer)); in qwriter_outer()
5991 flags = outer->sq_flags; in qwriter_outer()
6025 queue_writer(outer, func, q, mp); in qwriter_outer()
6033 outer->sq_count++; in qwriter_outer()
6034 ASSERT(outer->sq_count != 0); /* wraparound */ in qwriter_outer()
6046 for (sq = outer->sq_onext; sq != outer; sq = sq->sq_onext) { in qwriter_outer()
6073 outer->sq_flags = flags; in qwriter_outer()
6074 queue_writer(outer, func, q, mp); in qwriter_outer()
6076 mutex_enter(SQLOCK(outer)); in qwriter_outer()
6077 ASSERT(outer->sq_count > 0); in qwriter_outer()
6078 outer->sq_count--; in qwriter_outer()
6079 ASSERT(outer->sq_flags & SQ_WRITER); in qwriter_outer()
6080 flags = outer->sq_flags; in qwriter_outer()
6084 cv_broadcast(&outer->sq_wait); in qwriter_outer()
6086 outer->sq_flags = flags; in qwriter_outer()
6087 mutex_exit(SQLOCK(outer)); in qwriter_outer()
6090 outer->sq_flags = flags; in qwriter_outer()
6091 mutex_exit(SQLOCK(outer)); in qwriter_outer()
6097 outer_exit(outer); in qwriter_outer()
6104 write_now(syncq_t *outer) in write_now() argument
6110 ASSERT(MUTEX_HELD(SQLOCK(outer))); in write_now()
6111 ASSERT(outer->sq_outer == NULL && outer->sq_onext != NULL && in write_now()
6112 outer->sq_oprev != NULL); in write_now()
6113 while ((mp = outer->sq_evhead) != NULL) { in write_now()
6118 ASSERT(!(outer->sq_flags & SQ_MESSAGES)); in write_now()
6119 ASSERT((outer->sq_flags & SQ_EVENTS)); in write_now()
6121 outer->sq_evhead = mp->b_next; in write_now()
6122 if (outer->sq_evhead == NULL) { in write_now()
6123 outer->sq_evtail = NULL; in write_now()
6124 outer->sq_flags &= ~SQ_EVENTS; in write_now()
6126 ASSERT(outer->sq_count != 0); in write_now()
6127 outer->sq_count--; /* Incremented when enqueued. */ in write_now()
6128 mutex_exit(SQLOCK(outer)); in write_now()
6145 mutex_enter(SQLOCK(outer)); in write_now()
6147 ASSERT(MUTEX_HELD(SQLOCK(outer))); in write_now()
8299 qwriter_outer_service(syncq_t *outer) in qwriter_outer_service() argument
8306 outer_enter(outer, SQ_BLOCKED|SQ_WRITER); in qwriter_outer_service()
8315 outer_exit(outer); in qwriter_outer_service()