Lines Matching refs:q

1853 getq(queue_t *q)  in getq()  argument
1858 bp = getq_noenab(q, 0); in getq()
1866 if (band == 0 && (q->q_flag & (QWANTW|QWANTWSYNC)) == 0) in getq()
1869 qbackenable(q, band); in getq()
1907 getq_noenab(queue_t *q, ssize_t rbytes) in getq_noenab() argument
1916 freezer = STREAM(q)->sd_freezer; in getq_noenab()
1918 ASSERT(frozenstr(q)); in getq_noenab()
1919 ASSERT(MUTEX_HELD(QLOCK(q))); in getq_noenab()
1921 mutex_enter(QLOCK(q)); in getq_noenab()
1923 if ((bp = q->q_first) == 0) { in getq_noenab()
1924 q->q_flag |= QWANTR; in getq_noenab()
1933 (q->q_count > rbytes)) { in getq_noenab()
2011 q->q_last = mp2; in getq_noenab()
2014 q->q_first = mp2; in getq_noenab()
2016 if ((q->q_first = bp->b_next) == NULL) in getq_noenab()
2017 q->q_last = NULL; in getq_noenab()
2019 q->q_first->b_prev = NULL; in getq_noenab()
2030 if ((q->q_first = bp->b_next) == NULL) in getq_noenab()
2031 q->q_last = NULL; in getq_noenab()
2033 q->q_first->b_prev = NULL; in getq_noenab()
2036 q->q_count -= bytecnt; in getq_noenab()
2037 q->q_mblkcnt -= mblkcnt; in getq_noenab()
2038 if (q->q_mblkcnt == 0 || ((q->q_count < q->q_hiwat) && in getq_noenab()
2039 (q->q_mblkcnt < q->q_hiwat))) { in getq_noenab()
2040 q->q_flag &= ~QFULL; in getq_noenab()
2045 ASSERT(bp->b_band <= q->q_nband); in getq_noenab()
2046 ASSERT(q->q_bandp != NULL); in getq_noenab()
2047 ASSERT(MUTEX_HELD(QLOCK(q))); in getq_noenab()
2048 qbp = q->q_bandp; in getq_noenab()
2066 q->q_flag &= ~QWANTR; in getq_noenab()
2071 mutex_exit(QLOCK(q)); in getq_noenab()
2073 STR_FTEVENT_MSG(bp, q, FTEV_GETQ, 0); in getq_noenab()
2089 qbackenable(queue_t *q, uchar_t band) in qbackenable() argument
2095 ASSERT(q); in qbackenable()
2096 ASSERT((q->q_flag & QREADR) || MUTEX_NOT_HELD(&STREAM(q)->sd_lock)); in qbackenable()
2106 if (band == 0 && (q->q_flag & (QWANTW|QWANTWSYNC)) == 0) in qbackenable()
2110 freezer = STREAM(q)->sd_freezer; in qbackenable()
2112 ASSERT(frozenstr(q)); in qbackenable()
2113 ASSERT(MUTEX_HELD(QLOCK(q))); in qbackenable()
2115 mutex_enter(QLOCK(q)); in qbackenable()
2118 if (q->q_lowat == 0 || (q->q_count < q->q_lowat && in qbackenable()
2119 q->q_mblkcnt < q->q_lowat)) { in qbackenable()
2120 backenab = q->q_flag & (QWANTW|QWANTWSYNC); in qbackenable()
2125 ASSERT((unsigned)band <= q->q_nband); in qbackenable()
2126 ASSERT(q->q_bandp != NULL); in qbackenable()
2128 qbp = q->q_bandp; in qbackenable()
2141 mutex_exit(QLOCK(q)); in qbackenable()
2147 q->q_flag &= ~QWANTWSYNC; in qbackenable()
2152 q->q_flag &= ~QWANTW; in qbackenable()
2157 mutex_exit(QLOCK(q)); in qbackenable()
2160 strwakeq(q, QWANTWSYNC); in qbackenable()
2162 backenable(q, band); in qbackenable()
2174 rmvq(queue_t *q, mblk_t *mp) in rmvq() argument
2178 rmvq_noenab(q, mp); in rmvq()
2179 if (curthread != STREAM(q)->sd_freezer && MUTEX_HELD(QLOCK(q))) { in rmvq()
2184 mutex_exit(QLOCK(q)); in rmvq()
2185 qbackenable(q, mp->b_band); in rmvq()
2186 mutex_enter(QLOCK(q)); in rmvq()
2188 qbackenable(q, mp->b_band); in rmvq()
2197 rmvq_noenab(queue_t *q, mblk_t *mp) in rmvq_noenab() argument
2204 freezer = STREAM(q)->sd_freezer; in rmvq_noenab()
2206 ASSERT(frozenstr(q)); in rmvq_noenab()
2207 ASSERT(MUTEX_HELD(QLOCK(q))); in rmvq_noenab()
2208 } else if (MUTEX_HELD(QLOCK(q))) { in rmvq_noenab()
2212 mutex_enter(QLOCK(q)); in rmvq_noenab()
2214 ASSERT(mp->b_band <= q->q_nband); in rmvq_noenab()
2216 ASSERT(q->q_bandp != NULL); in rmvq_noenab()
2217 qbp = q->q_bandp; in rmvq_noenab()
2241 q->q_first = mp->b_next; in rmvq_noenab()
2245 q->q_last = mp->b_prev; in rmvq_noenab()
2253 q->q_count -= bytecnt; in rmvq_noenab()
2254 q->q_mblkcnt -= mblkcnt; in rmvq_noenab()
2255 if (q->q_mblkcnt == 0 || ((q->q_count < q->q_hiwat) && in rmvq_noenab()
2256 (q->q_mblkcnt < q->q_hiwat))) { in rmvq_noenab()
2257 q->q_flag &= ~QFULL; in rmvq_noenab()
2268 mutex_exit(QLOCK(q)); in rmvq_noenab()
2270 STR_FTEVENT_MSG(mp, q, FTEV_RMVQ, 0); in rmvq_noenab()
2288 flushq_common(queue_t *q, int flag, int pcproto_flag) in flushq_common() argument
2296 if (q->q_first == NULL) in flushq_common()
2299 mutex_enter(QLOCK(q)); in flushq_common()
2300 mp = q->q_first; in flushq_common()
2301 q->q_first = NULL; in flushq_common()
2302 q->q_last = NULL; in flushq_common()
2303 q->q_count = 0; in flushq_common()
2304 q->q_mblkcnt = 0; in flushq_common()
2305 for (qbp = q->q_bandp; qbp; qbp = qbp->qb_next) { in flushq_common()
2312 q->q_flag &= ~QFULL; in flushq_common()
2313 mutex_exit(QLOCK(q)); in flushq_common()
2318 STR_FTEVENT_MBLK(mp, q, FTEV_FLUSHQ, 0); in flushq_common()
2321 (void) putq(q, mp); in flushq_common()
2325 (void) putq(q, mp); in flushq_common()
2329 mutex_enter(QLOCK(q)); in flushq_common()
2330 for (qbp = q->q_bandp; qbp; qbp = qbp->qb_next) { in flushq_common()
2342 ASSERT(bpri == (unsigned char)(q->q_nband + 1)); in flushq_common()
2343 if ((q->q_flag & QWANTW) && in flushq_common()
2344 (((q->q_count < q->q_lowat) && in flushq_common()
2345 (q->q_mblkcnt < q->q_lowat)) || q->q_lowat == 0)) { in flushq_common()
2346 q->q_flag &= ~QWANTW; in flushq_common()
2357 mutex_exit(QLOCK(q)); in flushq_common()
2358 for (bpri = q->q_nband; bpri != 0; bpri--) in flushq_common()
2360 backenable(q, bpri); in flushq_common()
2362 backenable(q, 0); in flushq_common()
2364 mutex_exit(QLOCK(q)); in flushq_common()
2373 flushq(queue_t *q, int flag) in flushq() argument
2375 flushq_common(q, flag, 0); in flushq()
2392 flushband(queue_t *q, unsigned char pri, int flag) in flushband() argument
2401 if (pri > q->q_nband) { in flushband()
2404 mutex_enter(QLOCK(q)); in flushband()
2406 mp = q->q_first; in flushband()
2407 q->q_first = NULL; in flushband()
2408 q->q_last = NULL; in flushband()
2409 q->q_count = 0; in flushband()
2410 q->q_mblkcnt = 0; in flushband()
2411 for (qbp = q->q_bandp; qbp; qbp = qbp->qb_next) { in flushband()
2418 q->q_flag &= ~QFULL; in flushband()
2419 mutex_exit(QLOCK(q)); in flushband()
2428 (void) putq(q, mp); in flushband()
2431 mutex_enter(QLOCK(q)); in flushband()
2432 if ((q->q_flag & QWANTW) && in flushband()
2433 (((q->q_count < q->q_lowat) && in flushband()
2434 (q->q_mblkcnt < q->q_lowat)) || q->q_lowat == 0)) { in flushband()
2435 q->q_flag &= ~QWANTW; in flushband()
2436 mutex_exit(QLOCK(q)); in flushband()
2438 backenable(q, pri); in flushband()
2440 mutex_exit(QLOCK(q)); in flushband()
2445 ASSERT(MUTEX_HELD(QLOCK(q))); in flushband()
2446 qbp = q->q_bandp; in flushband()
2451 mutex_exit(QLOCK(q)); in flushband()
2464 rmvq_noenab(q, mp); in flushband()
2470 mutex_exit(QLOCK(q)); in flushband()
2477 qbackenable(q, pri); in flushband()
2487 canput(queue_t *q) in canput() argument
2489 TRACE_1(TR_FAC_STREAMS_FR, TR_CANPUT_IN, "canput:%p", q); in canput()
2492 ASSERT(STRMATED(q->q_stream) || STREAM(q) == STREAM(q->q_nfsrv)); in canput()
2495 q = q->q_nfsrv; in canput()
2497 if (!(q->q_flag & QFULL)) { in canput()
2498 TRACE_2(TR_FAC_STREAMS_FR, TR_CANPUT_OUT, "canput:%p %d", q, 1); in canput()
2501 mutex_enter(QLOCK(q)); in canput()
2502 if (q->q_flag & QFULL) { in canput()
2503 q->q_flag |= QWANTW; in canput()
2504 mutex_exit(QLOCK(q)); in canput()
2505 TRACE_2(TR_FAC_STREAMS_FR, TR_CANPUT_OUT, "canput:%p %d", q, 0); in canput()
2508 mutex_exit(QLOCK(q)); in canput()
2509 TRACE_2(TR_FAC_STREAMS_FR, TR_CANPUT_OUT, "canput:%p %d", q, 1); in canput()
2520 bcanput(queue_t *q, unsigned char pri) in bcanput() argument
2524 TRACE_2(TR_FAC_STREAMS_FR, TR_BCANPUT_IN, "bcanput:%p %p", q, pri); in bcanput()
2525 if (!q) in bcanput()
2529 q = q->q_nfsrv; in bcanput()
2531 mutex_enter(QLOCK(q)); in bcanput()
2533 if (q->q_flag & QFULL) { in bcanput()
2534 q->q_flag |= QWANTW; in bcanput()
2535 mutex_exit(QLOCK(q)); in bcanput()
2537 "bcanput:%p %X %d", q, pri, 0); in bcanput()
2541 if (pri > q->q_nband) { in bcanput()
2545 mutex_exit(QLOCK(q)); in bcanput()
2547 "bcanput:%p %X %d", q, pri, 1); in bcanput()
2550 qbp = q->q_bandp; in bcanput()
2555 mutex_exit(QLOCK(q)); in bcanput()
2557 "bcanput:%p %X %d", q, pri, 0); in bcanput()
2561 mutex_exit(QLOCK(q)); in bcanput()
2563 "bcanput:%p %X %d", q, pri, 1); in bcanput()
2585 putq(queue_t *q, mblk_t *bp) in putq() argument
2593 freezer = STREAM(q)->sd_freezer; in putq()
2595 ASSERT(frozenstr(q)); in putq()
2596 ASSERT(MUTEX_HELD(QLOCK(q))); in putq()
2598 mutex_enter(QLOCK(q)); in putq()
2611 if (bp->b_band > q->q_nband) { in putq()
2623 qbpp = &q->q_bandp; in putq()
2626 while (bp->b_band > q->q_nband) { in putq()
2629 mutex_exit(QLOCK(q)); in putq()
2632 (*qbpp)->qb_hiwat = q->q_hiwat; in putq()
2633 (*qbpp)->qb_lowat = q->q_lowat; in putq()
2634 q->q_nband++; in putq()
2638 ASSERT(MUTEX_HELD(QLOCK(q))); in putq()
2639 qbp = q->q_bandp; in putq()
2652 if (!q->q_first) { in putq()
2655 q->q_first = bp; in putq()
2656 q->q_last = bp; in putq()
2667 tmp = q->q_last; in putq()
2672 q->q_last = bp; in putq()
2674 tmp = q->q_first; in putq()
2686 q->q_first = bp; in putq()
2700 q->q_last = bp; in putq()
2704 tmp = q->q_last; in putq()
2714 q->q_last = bp; in putq()
2716 tmp = q->q_first; in putq()
2730 q->q_first = bp; in putq()
2749 q->q_count += bytecnt; in putq()
2750 q->q_mblkcnt += mblkcnt; in putq()
2751 if ((q->q_count >= q->q_hiwat) || in putq()
2752 (q->q_mblkcnt >= q->q_hiwat)) { in putq()
2753 q->q_flag |= QFULL; in putq()
2757 STR_FTEVENT_MSG(bp, q, FTEV_PUTQ, 0); in putq()
2760 (canenable(q) && (q->q_flag & QWANTR || bp->b_band))) in putq()
2761 qenable_locked(q); in putq()
2762 ASSERT(MUTEX_HELD(QLOCK(q))); in putq()
2764 mutex_exit(QLOCK(q)); in putq()
2774 putbq(queue_t *q, mblk_t *bp) in putbq() argument
2782 ASSERT(q && bp); in putbq()
2784 freezer = STREAM(q)->sd_freezer; in putbq()
2786 ASSERT(frozenstr(q)); in putbq()
2787 ASSERT(MUTEX_HELD(QLOCK(q))); in putbq()
2789 mutex_enter(QLOCK(q)); in putbq()
2802 if (bp->b_band > q->q_nband) { in putbq()
2803 qbpp = &q->q_bandp; in putbq()
2806 while (bp->b_band > q->q_nband) { in putbq()
2809 mutex_exit(QLOCK(q)); in putbq()
2812 (*qbpp)->qb_hiwat = q->q_hiwat; in putbq()
2813 (*qbpp)->qb_lowat = q->q_lowat; in putbq()
2814 q->q_nband++; in putbq()
2818 qbp = q->q_bandp; in putbq()
2828 tmp = q->q_first; in putbq()
2834 q->q_last = bp; in putbq()
2835 q->q_first = bp; in putbq()
2853 q->q_first = bp; in putbq()
2856 tmp = q->q_last; in putbq()
2866 q->q_last = bp; in putbq()
2868 tmp = q->q_first; in putbq()
2882 q->q_first = bp; in putbq()
2894 tmp = q->q_last; in putbq()
2899 q->q_last = bp; in putbq()
2901 tmp = q->q_first; in putbq()
2915 q->q_first = bp; in putbq()
2931 q->q_count += bytecnt; in putbq()
2932 q->q_mblkcnt += mblkcnt; in putbq()
2933 if ((q->q_count >= q->q_hiwat) || in putbq()
2934 (q->q_mblkcnt >= q->q_hiwat)) { in putbq()
2935 q->q_flag |= QFULL; in putbq()
2939 STR_FTEVENT_MSG(bp, q, FTEV_PUTBQ, 0); in putbq()
2941 if ((mcls > QNORM) || (canenable(q) && (q->q_flag & QWANTR))) in putbq()
2942 qenable_locked(q); in putbq()
2943 ASSERT(MUTEX_HELD(QLOCK(q))); in putbq()
2945 mutex_exit(QLOCK(q)); in putbq()
2965 insq(queue_t *q, mblk_t *emp, mblk_t *mp) in insq() argument
2973 freezer = STREAM(q)->sd_freezer; in insq()
2975 ASSERT(frozenstr(q)); in insq()
2976 ASSERT(MUTEX_HELD(QLOCK(q))); in insq()
2977 } else if (MUTEX_HELD(QLOCK(q))) { in insq()
2981 mutex_enter(QLOCK(q)); in insq()
2997 tmp = q->q_last; in insq()
3002 "on q %p", (void *)q); in insq()
3004 mutex_exit(QLOCK(q)); in insq()
3013 if (mp->b_band > q->q_nband) { in insq()
3014 qbpp = &q->q_bandp; in insq()
3017 while (mp->b_band > q->q_nband) { in insq()
3020 mutex_exit(QLOCK(q)); in insq()
3023 (*qbpp)->qb_hiwat = q->q_hiwat; in insq()
3024 (*qbpp)->qb_lowat = q->q_lowat; in insq()
3025 q->q_nband++; in insq()
3029 qbp = q->q_bandp; in insq()
3039 q->q_first = mp; in insq()
3042 if ((mp->b_prev = q->q_last) != NULL) in insq()
3043 q->q_last->b_next = mp; in insq()
3045 q->q_first = mp; in insq()
3046 q->q_last = mp; in insq()
3071 q->q_count += bytecnt; in insq()
3072 q->q_mblkcnt += mblkcnt; in insq()
3073 if ((q->q_count >= q->q_hiwat) || in insq()
3074 (q->q_mblkcnt >= q->q_hiwat)) { in insq()
3075 q->q_flag |= QFULL; in insq()
3079 STR_FTEVENT_MSG(mp, q, FTEV_INSQ, 0); in insq()
3081 if (canenable(q) && (q->q_flag & QWANTR)) in insq()
3082 qenable_locked(q); in insq()
3084 ASSERT(MUTEX_HELD(QLOCK(q))); in insq()
3086 mutex_exit(QLOCK(q)); in insq()
3095 putctl(queue_t *q, int type) in putctl() argument
3104 put(q, bp); in putctl()
3113 putctl1(queue_t *q, int type, int param) in putctl1() argument
3123 put(q, bp); in putctl1()
3129 putnextctl1(queue_t *q, int type, int param) in putnextctl1() argument
3140 putnext(q, bp); in putnextctl1()
3146 putnextctl(queue_t *q, int type) in putnextctl() argument
3155 putnext(q, bp); in putnextctl()
3164 backq(queue_t *q) in backq() argument
3166 q = _OTHERQ(q); in backq()
3167 if (q->q_next) { in backq()
3168 q = q->q_next; in backq()
3169 return (_OTHERQ(q)); in backq()
3179 qreply(queue_t *q, mblk_t *bp) in qreply() argument
3181 ASSERT(q && bp); in qreply()
3183 putnext(_OTHERQ(q), bp); in qreply()
3208 qenable(queue_t *q) in qenable() argument
3210 mutex_enter(QLOCK(q)); in qenable()
3211 qenable_locked(q); in qenable()
3212 mutex_exit(QLOCK(q)); in qenable()
3235 noenable(queue_t *q) in noenable() argument
3237 mutex_enter(QLOCK(q)); in noenable()
3238 q->q_flag |= QNOENB; in noenable()
3239 mutex_exit(QLOCK(q)); in noenable()
3243 enableok(queue_t *q) in enableok() argument
3245 mutex_enter(QLOCK(q)); in enableok()
3246 q->q_flag &= ~QNOENB; in enableok()
3247 mutex_exit(QLOCK(q)); in enableok()
3254 strqset(queue_t *q, qfields_t what, unsigned char pri, intptr_t val) in strqset() argument
3261 freezer = STREAM(q)->sd_freezer; in strqset()
3263 ASSERT(frozenstr(q)); in strqset()
3264 ASSERT(MUTEX_HELD(QLOCK(q))); in strqset()
3266 mutex_enter(QLOCK(q)); in strqset()
3276 if (pri > q->q_nband) { in strqset()
3277 qbpp = &q->q_bandp; in strqset()
3280 while (pri > q->q_nband) { in strqset()
3285 (*qbpp)->qb_hiwat = q->q_hiwat; in strqset()
3286 (*qbpp)->qb_lowat = q->q_lowat; in strqset()
3287 q->q_nband++; in strqset()
3291 qbp = q->q_bandp; in strqset()
3302 q->q_hiwat = (size_t)val; in strqset()
3309 q->q_lowat = (size_t)val; in strqset()
3316 q->q_maxpsz = (ssize_t)val; in strqset()
3324 wrq = STREAM(q)->sd_wrq; in strqset()
3325 if (q != wrq->q_next) in strqset()
3333 mutex_exit(QLOCK(q)); in strqset()
3342 if (STREAM(q)->sd_vnode->v_type == VFIFO) in strqset()
3348 STREAM(q)->sd_qn_maxpsz = val; in strqset()
3351 mutex_enter(QLOCK(q)); in strqset()
3359 q->q_minpsz = (ssize_t)val; in strqset()
3367 wrq = STREAM(q)->sd_wrq; in strqset()
3368 if (q != wrq->q_next) in strqset()
3376 mutex_exit(QLOCK(q)); in strqset()
3379 STREAM(q)->sd_qn_minpsz = (ssize_t)val; in strqset()
3383 mutex_enter(QLOCK(q)); in strqset()
3391 q->q_struiot = (ushort_t)val; in strqset()
3407 mutex_exit(QLOCK(q)); in strqset()
3415 strqget(queue_t *q, qfields_t what, unsigned char pri, void *valp) in strqget() argument
3421 freezer = STREAM(q)->sd_freezer; in strqget()
3423 ASSERT(frozenstr(q)); in strqget()
3424 ASSERT(MUTEX_HELD(QLOCK(q))); in strqget()
3426 mutex_enter(QLOCK(q)); in strqget()
3435 if (pri > q->q_nband) { in strqget()
3436 qbpp = &q->q_bandp; in strqget()
3439 while (pri > q->q_nband) { in strqget()
3444 (*qbpp)->qb_hiwat = q->q_hiwat; in strqget()
3445 (*qbpp)->qb_lowat = q->q_lowat; in strqget()
3446 q->q_nband++; in strqget()
3450 qbp = q->q_bandp; in strqget()
3460 *(size_t *)valp = q->q_hiwat; in strqget()
3467 *(size_t *)valp = q->q_lowat; in strqget()
3474 *(ssize_t *)valp = q->q_maxpsz; in strqget()
3481 *(ssize_t *)valp = q->q_minpsz; in strqget()
3488 *(size_t *)valp = q->q_count; in strqget()
3495 *(mblk_t **)valp = q->q_first; in strqget()
3502 *(mblk_t **)valp = q->q_last; in strqget()
3509 *(uint_t *)valp = q->q_flag; in strqget()
3516 *(short *)valp = q->q_struiot; in strqget()
3525 mutex_exit(QLOCK(q)); in strqget()
3538 strwakeq(queue_t *q, int flag) in strwakeq() argument
3540 stdata_t *stp = STREAM(q); in strwakeq()
3546 ASSERT(!(q->q_flag & QREADR)); in strwakeq()
3595 struioget(queue_t *q, mblk_t *mp, struiod_t *dp, int noblock) in struioget() argument
3597 stdata_t *stp = STREAM(q); in struioget()
4025 isuioq(queue_t *q) in isuioq() argument
4027 if (q->q_flag & QREADR) in isuioq()
4028 return (STREAM(q)->sd_struiordq == q); in isuioq()
4030 return (STREAM(q)->sd_struiowrq == q); in isuioq()
4043 create_syncq_putlocks(queue_t *q) in create_syncq_putlocks() argument
4045 syncq_t *sq = q->q_syncq; in create_syncq_putlocks()
4083 q = _OTHERQ(q); in create_syncq_putlocks()
4084 if (!(q->q_flag & QPERQ)) { in create_syncq_putlocks()
4085 ASSERT(sq == q->q_syncq); in create_syncq_putlocks()
4088 ASSERT(q->q_syncq != NULL); in create_syncq_putlocks()
4089 ASSERT(sq != q->q_syncq); in create_syncq_putlocks()
4090 sq = q->q_syncq; in create_syncq_putlocks()
4121 create_putlocks(queue_t *q, int stream) in create_putlocks() argument
4124 struct stdata *stp = STREAM(q); in create_putlocks()
4126 q = _WR(q); in create_putlocks()
4161 while (_SAMESTR(q)) { in create_putlocks()
4162 create_syncq_putlocks(q); in create_putlocks()
4165 q = q->q_next; in create_putlocks()
4167 ASSERT(q != NULL); in create_putlocks()
4168 create_syncq_putlocks(q); in create_putlocks()