Lines Matching refs:q

1859 getq(queue_t *q)  in getq()  argument
1864 bp = getq_noenab(q, 0); in getq()
1872 if (band == 0 && (q->q_flag & (QWANTW|QWANTWSYNC)) == 0) in getq()
1875 qbackenable(q, band); in getq()
1913 getq_noenab(queue_t *q, ssize_t rbytes) in getq_noenab() argument
1922 freezer = STREAM(q)->sd_freezer; in getq_noenab()
1924 ASSERT(frozenstr(q)); in getq_noenab()
1925 ASSERT(MUTEX_HELD(QLOCK(q))); in getq_noenab()
1927 mutex_enter(QLOCK(q)); in getq_noenab()
1929 if ((bp = q->q_first) == 0) { in getq_noenab()
1930 q->q_flag |= QWANTR; in getq_noenab()
1939 (q->q_count > rbytes)) { in getq_noenab()
2017 q->q_last = mp2; in getq_noenab()
2020 q->q_first = mp2; in getq_noenab()
2022 if ((q->q_first = bp->b_next) == NULL) in getq_noenab()
2023 q->q_last = NULL; in getq_noenab()
2025 q->q_first->b_prev = NULL; in getq_noenab()
2036 if ((q->q_first = bp->b_next) == NULL) in getq_noenab()
2037 q->q_last = NULL; in getq_noenab()
2039 q->q_first->b_prev = NULL; in getq_noenab()
2042 q->q_count -= bytecnt; in getq_noenab()
2043 q->q_mblkcnt -= mblkcnt; in getq_noenab()
2044 if (q->q_mblkcnt == 0 || ((q->q_count < q->q_hiwat) && in getq_noenab()
2045 (q->q_mblkcnt < q->q_hiwat))) { in getq_noenab()
2046 q->q_flag &= ~QFULL; in getq_noenab()
2051 ASSERT(bp->b_band <= q->q_nband); in getq_noenab()
2052 ASSERT(q->q_bandp != NULL); in getq_noenab()
2053 ASSERT(MUTEX_HELD(QLOCK(q))); in getq_noenab()
2054 qbp = q->q_bandp; in getq_noenab()
2072 q->q_flag &= ~QWANTR; in getq_noenab()
2077 mutex_exit(QLOCK(q)); in getq_noenab()
2079 STR_FTEVENT_MSG(bp, q, FTEV_GETQ, 0); in getq_noenab()
2095 qbackenable(queue_t *q, uchar_t band) in qbackenable() argument
2101 ASSERT(q); in qbackenable()
2102 ASSERT((q->q_flag & QREADR) || MUTEX_NOT_HELD(&STREAM(q)->sd_lock)); in qbackenable()
2112 if (band == 0 && (q->q_flag & (QWANTW|QWANTWSYNC)) == 0) in qbackenable()
2116 freezer = STREAM(q)->sd_freezer; in qbackenable()
2118 ASSERT(frozenstr(q)); in qbackenable()
2119 ASSERT(MUTEX_HELD(QLOCK(q))); in qbackenable()
2121 mutex_enter(QLOCK(q)); in qbackenable()
2124 if (q->q_lowat == 0 || (q->q_count < q->q_lowat && in qbackenable()
2125 q->q_mblkcnt < q->q_lowat)) { in qbackenable()
2126 backenab = q->q_flag & (QWANTW|QWANTWSYNC); in qbackenable()
2131 ASSERT((unsigned)band <= q->q_nband); in qbackenable()
2132 ASSERT(q->q_bandp != NULL); in qbackenable()
2134 qbp = q->q_bandp; in qbackenable()
2147 mutex_exit(QLOCK(q)); in qbackenable()
2153 q->q_flag &= ~QWANTWSYNC; in qbackenable()
2158 q->q_flag &= ~QWANTW; in qbackenable()
2163 mutex_exit(QLOCK(q)); in qbackenable()
2166 strwakeq(q, QWANTWSYNC); in qbackenable()
2168 backenable(q, band); in qbackenable()
2180 rmvq(queue_t *q, mblk_t *mp) in rmvq() argument
2184 rmvq_noenab(q, mp); in rmvq()
2185 if (curthread != STREAM(q)->sd_freezer && MUTEX_HELD(QLOCK(q))) { in rmvq()
2190 mutex_exit(QLOCK(q)); in rmvq()
2191 qbackenable(q, mp->b_band); in rmvq()
2192 mutex_enter(QLOCK(q)); in rmvq()
2194 qbackenable(q, mp->b_band); in rmvq()
2203 rmvq_noenab(queue_t *q, mblk_t *mp) in rmvq_noenab() argument
2210 freezer = STREAM(q)->sd_freezer; in rmvq_noenab()
2212 ASSERT(frozenstr(q)); in rmvq_noenab()
2213 ASSERT(MUTEX_HELD(QLOCK(q))); in rmvq_noenab()
2214 } else if (MUTEX_HELD(QLOCK(q))) { in rmvq_noenab()
2218 mutex_enter(QLOCK(q)); in rmvq_noenab()
2220 ASSERT(mp->b_band <= q->q_nband); in rmvq_noenab()
2222 ASSERT(q->q_bandp != NULL); in rmvq_noenab()
2223 qbp = q->q_bandp; in rmvq_noenab()
2247 q->q_first = mp->b_next; in rmvq_noenab()
2251 q->q_last = mp->b_prev; in rmvq_noenab()
2259 q->q_count -= bytecnt; in rmvq_noenab()
2260 q->q_mblkcnt -= mblkcnt; in rmvq_noenab()
2261 if (q->q_mblkcnt == 0 || ((q->q_count < q->q_hiwat) && in rmvq_noenab()
2262 (q->q_mblkcnt < q->q_hiwat))) { in rmvq_noenab()
2263 q->q_flag &= ~QFULL; in rmvq_noenab()
2274 mutex_exit(QLOCK(q)); in rmvq_noenab()
2276 STR_FTEVENT_MSG(mp, q, FTEV_RMVQ, 0); in rmvq_noenab()
2294 flushq_common(queue_t *q, int flag, int pcproto_flag) in flushq_common() argument
2302 if (q->q_first == NULL) in flushq_common()
2305 mutex_enter(QLOCK(q)); in flushq_common()
2306 mp = q->q_first; in flushq_common()
2307 q->q_first = NULL; in flushq_common()
2308 q->q_last = NULL; in flushq_common()
2309 q->q_count = 0; in flushq_common()
2310 q->q_mblkcnt = 0; in flushq_common()
2311 for (qbp = q->q_bandp; qbp; qbp = qbp->qb_next) { in flushq_common()
2318 q->q_flag &= ~QFULL; in flushq_common()
2319 mutex_exit(QLOCK(q)); in flushq_common()
2324 STR_FTEVENT_MBLK(mp, q, FTEV_FLUSHQ, 0); in flushq_common()
2327 (void) putq(q, mp); in flushq_common()
2331 (void) putq(q, mp); in flushq_common()
2335 mutex_enter(QLOCK(q)); in flushq_common()
2336 for (qbp = q->q_bandp; qbp; qbp = qbp->qb_next) { in flushq_common()
2348 ASSERT(bpri == (unsigned char)(q->q_nband + 1)); in flushq_common()
2349 if ((q->q_flag & QWANTW) && in flushq_common()
2350 (((q->q_count < q->q_lowat) && in flushq_common()
2351 (q->q_mblkcnt < q->q_lowat)) || q->q_lowat == 0)) { in flushq_common()
2352 q->q_flag &= ~QWANTW; in flushq_common()
2363 mutex_exit(QLOCK(q)); in flushq_common()
2364 for (bpri = q->q_nband; bpri != 0; bpri--) in flushq_common()
2366 backenable(q, bpri); in flushq_common()
2368 backenable(q, 0); in flushq_common()
2370 mutex_exit(QLOCK(q)); in flushq_common()
2379 flushq(queue_t *q, int flag) in flushq() argument
2381 flushq_common(q, flag, 0); in flushq()
2398 flushband(queue_t *q, unsigned char pri, int flag) in flushband() argument
2407 if (pri > q->q_nband) { in flushband()
2410 mutex_enter(QLOCK(q)); in flushband()
2412 mp = q->q_first; in flushband()
2413 q->q_first = NULL; in flushband()
2414 q->q_last = NULL; in flushband()
2415 q->q_count = 0; in flushband()
2416 q->q_mblkcnt = 0; in flushband()
2417 for (qbp = q->q_bandp; qbp; qbp = qbp->qb_next) { in flushband()
2424 q->q_flag &= ~QFULL; in flushband()
2425 mutex_exit(QLOCK(q)); in flushband()
2434 (void) putq(q, mp); in flushband()
2437 mutex_enter(QLOCK(q)); in flushband()
2438 if ((q->q_flag & QWANTW) && in flushband()
2439 (((q->q_count < q->q_lowat) && in flushband()
2440 (q->q_mblkcnt < q->q_lowat)) || q->q_lowat == 0)) { in flushband()
2441 q->q_flag &= ~QWANTW; in flushband()
2442 mutex_exit(QLOCK(q)); in flushband()
2444 backenable(q, pri); in flushband()
2446 mutex_exit(QLOCK(q)); in flushband()
2451 ASSERT(MUTEX_HELD(QLOCK(q))); in flushband()
2452 qbp = q->q_bandp; in flushband()
2457 mutex_exit(QLOCK(q)); in flushband()
2470 rmvq_noenab(q, mp); in flushband()
2476 mutex_exit(QLOCK(q)); in flushband()
2483 qbackenable(q, pri); in flushband()
2493 canput(queue_t *q) in canput() argument
2495 TRACE_1(TR_FAC_STREAMS_FR, TR_CANPUT_IN, "canput:%p", q); in canput()
2498 ASSERT(STRMATED(q->q_stream) || STREAM(q) == STREAM(q->q_nfsrv)); in canput()
2501 q = q->q_nfsrv; in canput()
2503 if (!(q->q_flag & QFULL)) { in canput()
2504 TRACE_2(TR_FAC_STREAMS_FR, TR_CANPUT_OUT, "canput:%p %d", q, 1); in canput()
2507 mutex_enter(QLOCK(q)); in canput()
2508 if (q->q_flag & QFULL) { in canput()
2509 q->q_flag |= QWANTW; in canput()
2510 mutex_exit(QLOCK(q)); in canput()
2511 TRACE_2(TR_FAC_STREAMS_FR, TR_CANPUT_OUT, "canput:%p %d", q, 0); in canput()
2514 mutex_exit(QLOCK(q)); in canput()
2515 TRACE_2(TR_FAC_STREAMS_FR, TR_CANPUT_OUT, "canput:%p %d", q, 1); in canput()
2526 bcanput(queue_t *q, unsigned char pri) in bcanput() argument
2530 TRACE_2(TR_FAC_STREAMS_FR, TR_BCANPUT_IN, "bcanput:%p %p", q, pri); in bcanput()
2531 if (!q) in bcanput()
2535 q = q->q_nfsrv; in bcanput()
2537 mutex_enter(QLOCK(q)); in bcanput()
2539 if (q->q_flag & QFULL) { in bcanput()
2540 q->q_flag |= QWANTW; in bcanput()
2541 mutex_exit(QLOCK(q)); in bcanput()
2543 "bcanput:%p %X %d", q, pri, 0); in bcanput()
2547 if (pri > q->q_nband) { in bcanput()
2551 mutex_exit(QLOCK(q)); in bcanput()
2553 "bcanput:%p %X %d", q, pri, 1); in bcanput()
2556 qbp = q->q_bandp; in bcanput()
2561 mutex_exit(QLOCK(q)); in bcanput()
2563 "bcanput:%p %X %d", q, pri, 0); in bcanput()
2567 mutex_exit(QLOCK(q)); in bcanput()
2569 "bcanput:%p %X %d", q, pri, 1); in bcanput()
2591 putq(queue_t *q, mblk_t *bp) in putq() argument
2599 freezer = STREAM(q)->sd_freezer; in putq()
2601 ASSERT(frozenstr(q)); in putq()
2602 ASSERT(MUTEX_HELD(QLOCK(q))); in putq()
2604 mutex_enter(QLOCK(q)); in putq()
2617 if (bp->b_band > q->q_nband) { in putq()
2629 qbpp = &q->q_bandp; in putq()
2632 while (bp->b_band > q->q_nband) { in putq()
2635 mutex_exit(QLOCK(q)); in putq()
2638 (*qbpp)->qb_hiwat = q->q_hiwat; in putq()
2639 (*qbpp)->qb_lowat = q->q_lowat; in putq()
2640 q->q_nband++; in putq()
2644 ASSERT(MUTEX_HELD(QLOCK(q))); in putq()
2645 qbp = q->q_bandp; in putq()
2658 if (!q->q_first) { in putq()
2661 q->q_first = bp; in putq()
2662 q->q_last = bp; in putq()
2673 tmp = q->q_last; in putq()
2678 q->q_last = bp; in putq()
2680 tmp = q->q_first; in putq()
2692 q->q_first = bp; in putq()
2706 q->q_last = bp; in putq()
2710 tmp = q->q_last; in putq()
2720 q->q_last = bp; in putq()
2722 tmp = q->q_first; in putq()
2736 q->q_first = bp; in putq()
2755 q->q_count += bytecnt; in putq()
2756 q->q_mblkcnt += mblkcnt; in putq()
2757 if ((q->q_count >= q->q_hiwat) || in putq()
2758 (q->q_mblkcnt >= q->q_hiwat)) { in putq()
2759 q->q_flag |= QFULL; in putq()
2763 STR_FTEVENT_MSG(bp, q, FTEV_PUTQ, 0); in putq()
2766 (canenable(q) && (q->q_flag & QWANTR || bp->b_band))) in putq()
2767 qenable_locked(q); in putq()
2768 ASSERT(MUTEX_HELD(QLOCK(q))); in putq()
2770 mutex_exit(QLOCK(q)); in putq()
2780 putbq(queue_t *q, mblk_t *bp) in putbq() argument
2788 ASSERT(q && bp); in putbq()
2790 freezer = STREAM(q)->sd_freezer; in putbq()
2792 ASSERT(frozenstr(q)); in putbq()
2793 ASSERT(MUTEX_HELD(QLOCK(q))); in putbq()
2795 mutex_enter(QLOCK(q)); in putbq()
2808 if (bp->b_band > q->q_nband) { in putbq()
2809 qbpp = &q->q_bandp; in putbq()
2812 while (bp->b_band > q->q_nband) { in putbq()
2815 mutex_exit(QLOCK(q)); in putbq()
2818 (*qbpp)->qb_hiwat = q->q_hiwat; in putbq()
2819 (*qbpp)->qb_lowat = q->q_lowat; in putbq()
2820 q->q_nband++; in putbq()
2824 qbp = q->q_bandp; in putbq()
2834 tmp = q->q_first; in putbq()
2840 q->q_last = bp; in putbq()
2841 q->q_first = bp; in putbq()
2859 q->q_first = bp; in putbq()
2862 tmp = q->q_last; in putbq()
2872 q->q_last = bp; in putbq()
2874 tmp = q->q_first; in putbq()
2888 q->q_first = bp; in putbq()
2900 tmp = q->q_last; in putbq()
2905 q->q_last = bp; in putbq()
2907 tmp = q->q_first; in putbq()
2921 q->q_first = bp; in putbq()
2937 q->q_count += bytecnt; in putbq()
2938 q->q_mblkcnt += mblkcnt; in putbq()
2939 if ((q->q_count >= q->q_hiwat) || in putbq()
2940 (q->q_mblkcnt >= q->q_hiwat)) { in putbq()
2941 q->q_flag |= QFULL; in putbq()
2945 STR_FTEVENT_MSG(bp, q, FTEV_PUTBQ, 0); in putbq()
2947 if ((mcls > QNORM) || (canenable(q) && (q->q_flag & QWANTR))) in putbq()
2948 qenable_locked(q); in putbq()
2949 ASSERT(MUTEX_HELD(QLOCK(q))); in putbq()
2951 mutex_exit(QLOCK(q)); in putbq()
2971 insq(queue_t *q, mblk_t *emp, mblk_t *mp) in insq() argument
2979 freezer = STREAM(q)->sd_freezer; in insq()
2981 ASSERT(frozenstr(q)); in insq()
2982 ASSERT(MUTEX_HELD(QLOCK(q))); in insq()
2983 } else if (MUTEX_HELD(QLOCK(q))) { in insq()
2987 mutex_enter(QLOCK(q)); in insq()
3003 tmp = q->q_last; in insq()
3008 "on q %p", (void *)q); in insq()
3010 mutex_exit(QLOCK(q)); in insq()
3019 if (mp->b_band > q->q_nband) { in insq()
3020 qbpp = &q->q_bandp; in insq()
3023 while (mp->b_band > q->q_nband) { in insq()
3026 mutex_exit(QLOCK(q)); in insq()
3029 (*qbpp)->qb_hiwat = q->q_hiwat; in insq()
3030 (*qbpp)->qb_lowat = q->q_lowat; in insq()
3031 q->q_nband++; in insq()
3035 qbp = q->q_bandp; in insq()
3045 q->q_first = mp; in insq()
3048 if ((mp->b_prev = q->q_last) != NULL) in insq()
3049 q->q_last->b_next = mp; in insq()
3051 q->q_first = mp; in insq()
3052 q->q_last = mp; in insq()
3077 q->q_count += bytecnt; in insq()
3078 q->q_mblkcnt += mblkcnt; in insq()
3079 if ((q->q_count >= q->q_hiwat) || in insq()
3080 (q->q_mblkcnt >= q->q_hiwat)) { in insq()
3081 q->q_flag |= QFULL; in insq()
3085 STR_FTEVENT_MSG(mp, q, FTEV_INSQ, 0); in insq()
3087 if (canenable(q) && (q->q_flag & QWANTR)) in insq()
3088 qenable_locked(q); in insq()
3090 ASSERT(MUTEX_HELD(QLOCK(q))); in insq()
3092 mutex_exit(QLOCK(q)); in insq()
3101 putctl(queue_t *q, int type) in putctl() argument
3110 put(q, bp); in putctl()
3119 putctl1(queue_t *q, int type, int param) in putctl1() argument
3129 put(q, bp); in putctl1()
3135 putnextctl1(queue_t *q, int type, int param) in putnextctl1() argument
3146 putnext(q, bp); in putnextctl1()
3152 putnextctl(queue_t *q, int type) in putnextctl() argument
3161 putnext(q, bp); in putnextctl()
3170 backq(queue_t *q) in backq() argument
3172 q = _OTHERQ(q); in backq()
3173 if (q->q_next) { in backq()
3174 q = q->q_next; in backq()
3175 return (_OTHERQ(q)); in backq()
3185 qreply(queue_t *q, mblk_t *bp) in qreply() argument
3187 ASSERT(q && bp); in qreply()
3189 putnext(_OTHERQ(q), bp); in qreply()
3214 qenable(queue_t *q) in qenable() argument
3216 mutex_enter(QLOCK(q)); in qenable()
3217 qenable_locked(q); in qenable()
3218 mutex_exit(QLOCK(q)); in qenable()
3241 noenable(queue_t *q) in noenable() argument
3243 mutex_enter(QLOCK(q)); in noenable()
3244 q->q_flag |= QNOENB; in noenable()
3245 mutex_exit(QLOCK(q)); in noenable()
3249 enableok(queue_t *q) in enableok() argument
3251 mutex_enter(QLOCK(q)); in enableok()
3252 q->q_flag &= ~QNOENB; in enableok()
3253 mutex_exit(QLOCK(q)); in enableok()
3260 strqset(queue_t *q, qfields_t what, unsigned char pri, intptr_t val) in strqset() argument
3267 freezer = STREAM(q)->sd_freezer; in strqset()
3269 ASSERT(frozenstr(q)); in strqset()
3270 ASSERT(MUTEX_HELD(QLOCK(q))); in strqset()
3272 mutex_enter(QLOCK(q)); in strqset()
3282 if (pri > q->q_nband) { in strqset()
3283 qbpp = &q->q_bandp; in strqset()
3286 while (pri > q->q_nband) { in strqset()
3291 (*qbpp)->qb_hiwat = q->q_hiwat; in strqset()
3292 (*qbpp)->qb_lowat = q->q_lowat; in strqset()
3293 q->q_nband++; in strqset()
3297 qbp = q->q_bandp; in strqset()
3308 q->q_hiwat = (size_t)val; in strqset()
3315 q->q_lowat = (size_t)val; in strqset()
3322 q->q_maxpsz = (ssize_t)val; in strqset()
3330 wrq = STREAM(q)->sd_wrq; in strqset()
3331 if (q != wrq->q_next) in strqset()
3339 mutex_exit(QLOCK(q)); in strqset()
3348 if (STREAM(q)->sd_vnode->v_type == VFIFO) in strqset()
3354 STREAM(q)->sd_qn_maxpsz = val; in strqset()
3357 mutex_enter(QLOCK(q)); in strqset()
3365 q->q_minpsz = (ssize_t)val; in strqset()
3373 wrq = STREAM(q)->sd_wrq; in strqset()
3374 if (q != wrq->q_next) in strqset()
3382 mutex_exit(QLOCK(q)); in strqset()
3385 STREAM(q)->sd_qn_minpsz = (ssize_t)val; in strqset()
3389 mutex_enter(QLOCK(q)); in strqset()
3397 q->q_struiot = (ushort_t)val; in strqset()
3413 mutex_exit(QLOCK(q)); in strqset()
3421 strqget(queue_t *q, qfields_t what, unsigned char pri, void *valp) in strqget() argument
3427 freezer = STREAM(q)->sd_freezer; in strqget()
3429 ASSERT(frozenstr(q)); in strqget()
3430 ASSERT(MUTEX_HELD(QLOCK(q))); in strqget()
3432 mutex_enter(QLOCK(q)); in strqget()
3441 if (pri > q->q_nband) { in strqget()
3442 qbpp = &q->q_bandp; in strqget()
3445 while (pri > q->q_nband) { in strqget()
3450 (*qbpp)->qb_hiwat = q->q_hiwat; in strqget()
3451 (*qbpp)->qb_lowat = q->q_lowat; in strqget()
3452 q->q_nband++; in strqget()
3456 qbp = q->q_bandp; in strqget()
3466 *(size_t *)valp = q->q_hiwat; in strqget()
3473 *(size_t *)valp = q->q_lowat; in strqget()
3480 *(ssize_t *)valp = q->q_maxpsz; in strqget()
3487 *(ssize_t *)valp = q->q_minpsz; in strqget()
3494 *(size_t *)valp = q->q_count; in strqget()
3501 *(mblk_t **)valp = q->q_first; in strqget()
3508 *(mblk_t **)valp = q->q_last; in strqget()
3515 *(uint_t *)valp = q->q_flag; in strqget()
3522 *(short *)valp = q->q_struiot; in strqget()
3531 mutex_exit(QLOCK(q)); in strqget()
3544 strwakeq(queue_t *q, int flag) in strwakeq() argument
3546 stdata_t *stp = STREAM(q); in strwakeq()
3552 ASSERT(!(q->q_flag & QREADR)); in strwakeq()
3601 struioget(queue_t *q, mblk_t *mp, struiod_t *dp, int noblock) in struioget() argument
3603 stdata_t *stp = STREAM(q); in struioget()
4031 isuioq(queue_t *q) in isuioq() argument
4033 if (q->q_flag & QREADR) in isuioq()
4034 return (STREAM(q)->sd_struiordq == q); in isuioq()
4036 return (STREAM(q)->sd_struiowrq == q); in isuioq()
4049 create_syncq_putlocks(queue_t *q) in create_syncq_putlocks() argument
4051 syncq_t *sq = q->q_syncq; in create_syncq_putlocks()
4089 q = _OTHERQ(q); in create_syncq_putlocks()
4090 if (!(q->q_flag & QPERQ)) { in create_syncq_putlocks()
4091 ASSERT(sq == q->q_syncq); in create_syncq_putlocks()
4094 ASSERT(q->q_syncq != NULL); in create_syncq_putlocks()
4095 ASSERT(sq != q->q_syncq); in create_syncq_putlocks()
4096 sq = q->q_syncq; in create_syncq_putlocks()
4127 create_putlocks(queue_t *q, int stream) in create_putlocks() argument
4130 struct stdata *stp = STREAM(q); in create_putlocks()
4132 q = _WR(q); in create_putlocks()
4167 while (_SAMESTR(q)) { in create_putlocks()
4168 create_syncq_putlocks(q); in create_putlocks()
4171 q = q->q_next; in create_putlocks()
4173 ASSERT(q != NULL); in create_putlocks()
4174 create_syncq_putlocks(q); in create_putlocks()