Lines Matching refs:q
1857 getq(queue_t *q) in getq() argument
1862 bp = getq_noenab(q, 0); in getq()
1870 if (band == 0 && (q->q_flag & (QWANTW|QWANTWSYNC)) == 0) in getq()
1873 qbackenable(q, band); in getq()
1926 getq_noenab(queue_t *q, ssize_t rbytes) in getq_noenab() argument
1935 freezer = STREAM(q)->sd_freezer; in getq_noenab()
1937 ASSERT(frozenstr(q)); in getq_noenab()
1938 ASSERT(MUTEX_HELD(QLOCK(q))); in getq_noenab()
1940 mutex_enter(QLOCK(q)); in getq_noenab()
1942 if ((bp = q->q_first) == 0) { in getq_noenab()
1943 q->q_flag |= QWANTR; in getq_noenab()
1952 (q->q_count > rbytes)) { in getq_noenab()
2030 q->q_last = mp2; in getq_noenab()
2033 q->q_first = mp2; in getq_noenab()
2035 if ((q->q_first = bp->b_next) == NULL) in getq_noenab()
2036 q->q_last = NULL; in getq_noenab()
2038 q->q_first->b_prev = NULL; in getq_noenab()
2049 if ((q->q_first = bp->b_next) == NULL) in getq_noenab()
2050 q->q_last = NULL; in getq_noenab()
2052 q->q_first->b_prev = NULL; in getq_noenab()
2055 q->q_count -= bytecnt; in getq_noenab()
2056 q->q_mblkcnt -= mblkcnt; in getq_noenab()
2057 if (q->q_mblkcnt == 0 || ((q->q_count < q->q_hiwat) && in getq_noenab()
2058 (q->q_mblkcnt < q->q_hiwat))) { in getq_noenab()
2059 q->q_flag &= ~QFULL; in getq_noenab()
2064 ASSERT(bp->b_band <= q->q_nband); in getq_noenab()
2065 ASSERT(q->q_bandp != NULL); in getq_noenab()
2066 ASSERT(MUTEX_HELD(QLOCK(q))); in getq_noenab()
2067 qbp = q->q_bandp; in getq_noenab()
2085 q->q_flag &= ~QWANTR; in getq_noenab()
2090 mutex_exit(QLOCK(q)); in getq_noenab()
2092 STR_FTEVENT_MSG(bp, q, FTEV_GETQ, NULL); in getq_noenab()
2108 qbackenable(queue_t *q, uchar_t band) in qbackenable() argument
2114 ASSERT(q); in qbackenable()
2115 ASSERT((q->q_flag & QREADR) || MUTEX_NOT_HELD(&STREAM(q)->sd_lock)); in qbackenable()
2125 if (band == 0 && (q->q_flag & (QWANTW|QWANTWSYNC)) == 0) in qbackenable()
2129 freezer = STREAM(q)->sd_freezer; in qbackenable()
2131 ASSERT(frozenstr(q)); in qbackenable()
2132 ASSERT(MUTEX_HELD(QLOCK(q))); in qbackenable()
2134 mutex_enter(QLOCK(q)); in qbackenable()
2137 if (q->q_lowat == 0 || (q->q_count < q->q_lowat && in qbackenable()
2138 q->q_mblkcnt < q->q_lowat)) { in qbackenable()
2139 backenab = q->q_flag & (QWANTW|QWANTWSYNC); in qbackenable()
2144 ASSERT((unsigned)band <= q->q_nband); in qbackenable()
2145 ASSERT(q->q_bandp != NULL); in qbackenable()
2147 qbp = q->q_bandp; in qbackenable()
2160 mutex_exit(QLOCK(q)); in qbackenable()
2166 q->q_flag &= ~QWANTWSYNC; in qbackenable()
2171 q->q_flag &= ~QWANTW; in qbackenable()
2176 mutex_exit(QLOCK(q)); in qbackenable()
2179 strwakeq(q, QWANTWSYNC); in qbackenable()
2181 backenable(q, band); in qbackenable()
2193 rmvq(queue_t *q, mblk_t *mp) in rmvq() argument
2197 rmvq_noenab(q, mp); in rmvq()
2198 if (curthread != STREAM(q)->sd_freezer && MUTEX_HELD(QLOCK(q))) { in rmvq()
2203 mutex_exit(QLOCK(q)); in rmvq()
2204 qbackenable(q, mp->b_band); in rmvq()
2205 mutex_enter(QLOCK(q)); in rmvq()
2207 qbackenable(q, mp->b_band); in rmvq()
2216 rmvq_noenab(queue_t *q, mblk_t *mp) in rmvq_noenab() argument
2223 freezer = STREAM(q)->sd_freezer; in rmvq_noenab()
2225 ASSERT(frozenstr(q)); in rmvq_noenab()
2226 ASSERT(MUTEX_HELD(QLOCK(q))); in rmvq_noenab()
2227 } else if (MUTEX_HELD(QLOCK(q))) { in rmvq_noenab()
2231 mutex_enter(QLOCK(q)); in rmvq_noenab()
2233 ASSERT(mp->b_band <= q->q_nband); in rmvq_noenab()
2235 ASSERT(q->q_bandp != NULL); in rmvq_noenab()
2236 qbp = q->q_bandp; in rmvq_noenab()
2260 q->q_first = mp->b_next; in rmvq_noenab()
2264 q->q_last = mp->b_prev; in rmvq_noenab()
2272 q->q_count -= bytecnt; in rmvq_noenab()
2273 q->q_mblkcnt -= mblkcnt; in rmvq_noenab()
2274 if (q->q_mblkcnt == 0 || ((q->q_count < q->q_hiwat) && in rmvq_noenab()
2275 (q->q_mblkcnt < q->q_hiwat))) { in rmvq_noenab()
2276 q->q_flag &= ~QFULL; in rmvq_noenab()
2287 mutex_exit(QLOCK(q)); in rmvq_noenab()
2289 STR_FTEVENT_MSG(mp, q, FTEV_RMVQ, NULL); in rmvq_noenab()
2307 flushq_common(queue_t *q, int flag, int pcproto_flag) in flushq_common() argument
2315 if (q->q_first == NULL) in flushq_common()
2318 mutex_enter(QLOCK(q)); in flushq_common()
2319 mp = q->q_first; in flushq_common()
2320 q->q_first = NULL; in flushq_common()
2321 q->q_last = NULL; in flushq_common()
2322 q->q_count = 0; in flushq_common()
2323 q->q_mblkcnt = 0; in flushq_common()
2324 for (qbp = q->q_bandp; qbp; qbp = qbp->qb_next) { in flushq_common()
2331 q->q_flag &= ~QFULL; in flushq_common()
2332 mutex_exit(QLOCK(q)); in flushq_common()
2337 STR_FTEVENT_MBLK(mp, q, FTEV_FLUSHQ, NULL); in flushq_common()
2340 (void) putq(q, mp); in flushq_common()
2344 (void) putq(q, mp); in flushq_common()
2348 mutex_enter(QLOCK(q)); in flushq_common()
2349 for (qbp = q->q_bandp; qbp; qbp = qbp->qb_next) { in flushq_common()
2361 ASSERT(bpri == (unsigned char)(q->q_nband + 1)); in flushq_common()
2362 if ((q->q_flag & QWANTW) && in flushq_common()
2363 (((q->q_count < q->q_lowat) && in flushq_common()
2364 (q->q_mblkcnt < q->q_lowat)) || q->q_lowat == 0)) { in flushq_common()
2365 q->q_flag &= ~QWANTW; in flushq_common()
2376 mutex_exit(QLOCK(q)); in flushq_common()
2377 for (bpri = q->q_nband; bpri != 0; bpri--) in flushq_common()
2379 backenable(q, bpri); in flushq_common()
2381 backenable(q, 0); in flushq_common()
2383 mutex_exit(QLOCK(q)); in flushq_common()
2392 flushq(queue_t *q, int flag) in flushq() argument
2394 flushq_common(q, flag, 0); in flushq()
2411 flushband(queue_t *q, unsigned char pri, int flag) in flushband() argument
2420 if (pri > q->q_nband) { in flushband()
2423 mutex_enter(QLOCK(q)); in flushband()
2425 mp = q->q_first; in flushband()
2426 q->q_first = NULL; in flushband()
2427 q->q_last = NULL; in flushband()
2428 q->q_count = 0; in flushband()
2429 q->q_mblkcnt = 0; in flushband()
2430 for (qbp = q->q_bandp; qbp; qbp = qbp->qb_next) { in flushband()
2437 q->q_flag &= ~QFULL; in flushband()
2438 mutex_exit(QLOCK(q)); in flushband()
2447 (void) putq(q, mp); in flushband()
2450 mutex_enter(QLOCK(q)); in flushband()
2451 if ((q->q_flag & QWANTW) && in flushband()
2452 (((q->q_count < q->q_lowat) && in flushband()
2453 (q->q_mblkcnt < q->q_lowat)) || q->q_lowat == 0)) { in flushband()
2454 q->q_flag &= ~QWANTW; in flushband()
2455 mutex_exit(QLOCK(q)); in flushband()
2457 backenable(q, pri); in flushband()
2459 mutex_exit(QLOCK(q)); in flushband()
2464 ASSERT(MUTEX_HELD(QLOCK(q))); in flushband()
2465 qbp = q->q_bandp; in flushband()
2470 mutex_exit(QLOCK(q)); in flushband()
2483 rmvq_noenab(q, mp); in flushband()
2489 mutex_exit(QLOCK(q)); in flushband()
2496 qbackenable(q, pri); in flushband()
2506 canput(queue_t *q) in canput() argument
2508 TRACE_1(TR_FAC_STREAMS_FR, TR_CANPUT_IN, "canput:%p", q); in canput()
2511 ASSERT(STRMATED(q->q_stream) || STREAM(q) == STREAM(q->q_nfsrv)); in canput()
2514 q = q->q_nfsrv; in canput()
2516 if (!(q->q_flag & QFULL)) { in canput()
2517 TRACE_2(TR_FAC_STREAMS_FR, TR_CANPUT_OUT, "canput:%p %d", q, 1); in canput()
2520 mutex_enter(QLOCK(q)); in canput()
2521 if (q->q_flag & QFULL) { in canput()
2522 q->q_flag |= QWANTW; in canput()
2523 mutex_exit(QLOCK(q)); in canput()
2524 TRACE_2(TR_FAC_STREAMS_FR, TR_CANPUT_OUT, "canput:%p %d", q, 0); in canput()
2527 mutex_exit(QLOCK(q)); in canput()
2528 TRACE_2(TR_FAC_STREAMS_FR, TR_CANPUT_OUT, "canput:%p %d", q, 1); in canput()
2539 bcanput(queue_t *q, unsigned char pri) in bcanput() argument
2543 TRACE_2(TR_FAC_STREAMS_FR, TR_BCANPUT_IN, "bcanput:%p %p", q, pri); in bcanput()
2544 if (!q) in bcanput()
2548 q = q->q_nfsrv; in bcanput()
2550 mutex_enter(QLOCK(q)); in bcanput()
2552 if (q->q_flag & QFULL) { in bcanput()
2553 q->q_flag |= QWANTW; in bcanput()
2554 mutex_exit(QLOCK(q)); in bcanput()
2556 "bcanput:%p %X %d", q, pri, 0); in bcanput()
2560 if (pri > q->q_nband) { in bcanput()
2564 mutex_exit(QLOCK(q)); in bcanput()
2566 "bcanput:%p %X %d", q, pri, 1); in bcanput()
2569 qbp = q->q_bandp; in bcanput()
2574 mutex_exit(QLOCK(q)); in bcanput()
2576 "bcanput:%p %X %d", q, pri, 0); in bcanput()
2580 mutex_exit(QLOCK(q)); in bcanput()
2582 "bcanput:%p %X %d", q, pri, 1); in bcanput()
2604 putq(queue_t *q, mblk_t *bp) in putq() argument
2612 freezer = STREAM(q)->sd_freezer; in putq()
2614 ASSERT(frozenstr(q)); in putq()
2615 ASSERT(MUTEX_HELD(QLOCK(q))); in putq()
2617 mutex_enter(QLOCK(q)); in putq()
2630 if (bp->b_band > q->q_nband) { in putq()
2642 qbpp = &q->q_bandp; in putq()
2645 while (bp->b_band > q->q_nband) { in putq()
2648 mutex_exit(QLOCK(q)); in putq()
2651 (*qbpp)->qb_hiwat = q->q_hiwat; in putq()
2652 (*qbpp)->qb_lowat = q->q_lowat; in putq()
2653 q->q_nband++; in putq()
2657 ASSERT(MUTEX_HELD(QLOCK(q))); in putq()
2658 qbp = q->q_bandp; in putq()
2671 if (!q->q_first) { in putq()
2674 q->q_first = bp; in putq()
2675 q->q_last = bp; in putq()
2686 tmp = q->q_last; in putq()
2691 q->q_last = bp; in putq()
2693 tmp = q->q_first; in putq()
2705 q->q_first = bp; in putq()
2719 q->q_last = bp; in putq()
2723 tmp = q->q_last; in putq()
2733 q->q_last = bp; in putq()
2735 tmp = q->q_first; in putq()
2749 q->q_first = bp; in putq()
2768 q->q_count += bytecnt; in putq()
2769 q->q_mblkcnt += mblkcnt; in putq()
2770 if ((q->q_count >= q->q_hiwat) || in putq()
2771 (q->q_mblkcnt >= q->q_hiwat)) { in putq()
2772 q->q_flag |= QFULL; in putq()
2776 STR_FTEVENT_MSG(bp, q, FTEV_PUTQ, NULL); in putq()
2779 (canenable(q) && (q->q_flag & QWANTR || bp->b_band))) in putq()
2780 qenable_locked(q); in putq()
2781 ASSERT(MUTEX_HELD(QLOCK(q))); in putq()
2783 mutex_exit(QLOCK(q)); in putq()
2793 putbq(queue_t *q, mblk_t *bp) in putbq() argument
2801 ASSERT(q && bp); in putbq()
2803 freezer = STREAM(q)->sd_freezer; in putbq()
2805 ASSERT(frozenstr(q)); in putbq()
2806 ASSERT(MUTEX_HELD(QLOCK(q))); in putbq()
2808 mutex_enter(QLOCK(q)); in putbq()
2821 if (bp->b_band > q->q_nband) { in putbq()
2822 qbpp = &q->q_bandp; in putbq()
2825 while (bp->b_band > q->q_nband) { in putbq()
2828 mutex_exit(QLOCK(q)); in putbq()
2831 (*qbpp)->qb_hiwat = q->q_hiwat; in putbq()
2832 (*qbpp)->qb_lowat = q->q_lowat; in putbq()
2833 q->q_nband++; in putbq()
2837 qbp = q->q_bandp; in putbq()
2847 tmp = q->q_first; in putbq()
2853 q->q_last = bp; in putbq()
2854 q->q_first = bp; in putbq()
2872 q->q_first = bp; in putbq()
2875 tmp = q->q_last; in putbq()
2885 q->q_last = bp; in putbq()
2887 tmp = q->q_first; in putbq()
2901 q->q_first = bp; in putbq()
2913 tmp = q->q_last; in putbq()
2918 q->q_last = bp; in putbq()
2920 tmp = q->q_first; in putbq()
2934 q->q_first = bp; in putbq()
2950 q->q_count += bytecnt; in putbq()
2951 q->q_mblkcnt += mblkcnt; in putbq()
2952 if ((q->q_count >= q->q_hiwat) || in putbq()
2953 (q->q_mblkcnt >= q->q_hiwat)) { in putbq()
2954 q->q_flag |= QFULL; in putbq()
2958 STR_FTEVENT_MSG(bp, q, FTEV_PUTBQ, NULL); in putbq()
2960 if ((mcls > QNORM) || (canenable(q) && (q->q_flag & QWANTR))) in putbq()
2961 qenable_locked(q); in putbq()
2962 ASSERT(MUTEX_HELD(QLOCK(q))); in putbq()
2964 mutex_exit(QLOCK(q)); in putbq()
2984 insq(queue_t *q, mblk_t *emp, mblk_t *mp) in insq() argument
2992 freezer = STREAM(q)->sd_freezer; in insq()
2994 ASSERT(frozenstr(q)); in insq()
2995 ASSERT(MUTEX_HELD(QLOCK(q))); in insq()
2996 } else if (MUTEX_HELD(QLOCK(q))) { in insq()
3000 mutex_enter(QLOCK(q)); in insq()
3016 tmp = q->q_last; in insq()
3021 "on q %p", (void *)q); in insq()
3023 mutex_exit(QLOCK(q)); in insq()
3032 if (mp->b_band > q->q_nband) { in insq()
3033 qbpp = &q->q_bandp; in insq()
3036 while (mp->b_band > q->q_nband) { in insq()
3039 mutex_exit(QLOCK(q)); in insq()
3042 (*qbpp)->qb_hiwat = q->q_hiwat; in insq()
3043 (*qbpp)->qb_lowat = q->q_lowat; in insq()
3044 q->q_nband++; in insq()
3048 qbp = q->q_bandp; in insq()
3058 q->q_first = mp; in insq()
3061 if ((mp->b_prev = q->q_last) != NULL) in insq()
3062 q->q_last->b_next = mp; in insq()
3064 q->q_first = mp; in insq()
3065 q->q_last = mp; in insq()
3090 q->q_count += bytecnt; in insq()
3091 q->q_mblkcnt += mblkcnt; in insq()
3092 if ((q->q_count >= q->q_hiwat) || in insq()
3093 (q->q_mblkcnt >= q->q_hiwat)) { in insq()
3094 q->q_flag |= QFULL; in insq()
3098 STR_FTEVENT_MSG(mp, q, FTEV_INSQ, NULL); in insq()
3100 if (canenable(q) && (q->q_flag & QWANTR)) in insq()
3101 qenable_locked(q); in insq()
3103 ASSERT(MUTEX_HELD(QLOCK(q))); in insq()
3105 mutex_exit(QLOCK(q)); in insq()
3114 putctl(queue_t *q, int type) in putctl() argument
3123 put(q, bp); in putctl()
3132 putctl1(queue_t *q, int type, int param) in putctl1() argument
3142 put(q, bp); in putctl1()
3148 putnextctl1(queue_t *q, int type, int param) in putnextctl1() argument
3159 putnext(q, bp); in putnextctl1()
3165 putnextctl(queue_t *q, int type) in putnextctl() argument
3174 putnext(q, bp); in putnextctl()
3183 backq(queue_t *q) in backq() argument
3185 q = _OTHERQ(q); in backq()
3186 if (q->q_next) { in backq()
3187 q = q->q_next; in backq()
3188 return (_OTHERQ(q)); in backq()
3198 qreply(queue_t *q, mblk_t *bp) in qreply() argument
3200 ASSERT(q && bp); in qreply()
3202 putnext(_OTHERQ(q), bp); in qreply()
3227 qenable(queue_t *q) in qenable() argument
3229 mutex_enter(QLOCK(q)); in qenable()
3230 qenable_locked(q); in qenable()
3231 mutex_exit(QLOCK(q)); in qenable()
3254 noenable(queue_t *q) in noenable() argument
3256 mutex_enter(QLOCK(q)); in noenable()
3257 q->q_flag |= QNOENB; in noenable()
3258 mutex_exit(QLOCK(q)); in noenable()
3262 enableok(queue_t *q) in enableok() argument
3264 mutex_enter(QLOCK(q)); in enableok()
3265 q->q_flag &= ~QNOENB; in enableok()
3266 mutex_exit(QLOCK(q)); in enableok()
3273 strqset(queue_t *q, qfields_t what, unsigned char pri, intptr_t val) in strqset() argument
3280 freezer = STREAM(q)->sd_freezer; in strqset()
3282 ASSERT(frozenstr(q)); in strqset()
3283 ASSERT(MUTEX_HELD(QLOCK(q))); in strqset()
3285 mutex_enter(QLOCK(q)); in strqset()
3295 if (pri > q->q_nband) { in strqset()
3296 qbpp = &q->q_bandp; in strqset()
3299 while (pri > q->q_nband) { in strqset()
3304 (*qbpp)->qb_hiwat = q->q_hiwat; in strqset()
3305 (*qbpp)->qb_lowat = q->q_lowat; in strqset()
3306 q->q_nband++; in strqset()
3310 qbp = q->q_bandp; in strqset()
3321 q->q_hiwat = (size_t)val; in strqset()
3328 q->q_lowat = (size_t)val; in strqset()
3335 q->q_maxpsz = (ssize_t)val; in strqset()
3343 wrq = STREAM(q)->sd_wrq; in strqset()
3344 if (q != wrq->q_next) in strqset()
3352 mutex_exit(QLOCK(q)); in strqset()
3361 if (STREAM(q)->sd_vnode->v_type == VFIFO) in strqset()
3367 STREAM(q)->sd_qn_maxpsz = val; in strqset()
3370 mutex_enter(QLOCK(q)); in strqset()
3378 q->q_minpsz = (ssize_t)val; in strqset()
3386 wrq = STREAM(q)->sd_wrq; in strqset()
3387 if (q != wrq->q_next) in strqset()
3395 mutex_exit(QLOCK(q)); in strqset()
3398 STREAM(q)->sd_qn_minpsz = (ssize_t)val; in strqset()
3402 mutex_enter(QLOCK(q)); in strqset()
3410 q->q_struiot = (ushort_t)val; in strqset()
3426 mutex_exit(QLOCK(q)); in strqset()
3434 strqget(queue_t *q, qfields_t what, unsigned char pri, void *valp) in strqget() argument
3440 freezer = STREAM(q)->sd_freezer; in strqget()
3442 ASSERT(frozenstr(q)); in strqget()
3443 ASSERT(MUTEX_HELD(QLOCK(q))); in strqget()
3445 mutex_enter(QLOCK(q)); in strqget()
3454 if (pri > q->q_nband) { in strqget()
3455 qbpp = &q->q_bandp; in strqget()
3458 while (pri > q->q_nband) { in strqget()
3463 (*qbpp)->qb_hiwat = q->q_hiwat; in strqget()
3464 (*qbpp)->qb_lowat = q->q_lowat; in strqget()
3465 q->q_nband++; in strqget()
3469 qbp = q->q_bandp; in strqget()
3479 *(size_t *)valp = q->q_hiwat; in strqget()
3486 *(size_t *)valp = q->q_lowat; in strqget()
3493 *(ssize_t *)valp = q->q_maxpsz; in strqget()
3500 *(ssize_t *)valp = q->q_minpsz; in strqget()
3507 *(size_t *)valp = q->q_count; in strqget()
3514 *(mblk_t **)valp = q->q_first; in strqget()
3521 *(mblk_t **)valp = q->q_last; in strqget()
3528 *(uint_t *)valp = q->q_flag; in strqget()
3535 *(short *)valp = q->q_struiot; in strqget()
3544 mutex_exit(QLOCK(q)); in strqget()
3557 strwakeq(queue_t *q, int flag) in strwakeq() argument
3559 stdata_t *stp = STREAM(q); in strwakeq()
3565 ASSERT(!(q->q_flag & QREADR)); in strwakeq()
3614 struioget(queue_t *q, mblk_t *mp, struiod_t *dp, int noblock) in struioget() argument
3616 stdata_t *stp = STREAM(q); in struioget()
4044 isuioq(queue_t *q) in isuioq() argument
4046 if (q->q_flag & QREADR) in isuioq()
4047 return (STREAM(q)->sd_struiordq == q); in isuioq()
4049 return (STREAM(q)->sd_struiowrq == q); in isuioq()
4062 create_syncq_putlocks(queue_t *q) in create_syncq_putlocks() argument
4064 syncq_t *sq = q->q_syncq; in create_syncq_putlocks()
4102 q = _OTHERQ(q); in create_syncq_putlocks()
4103 if (!(q->q_flag & QPERQ)) { in create_syncq_putlocks()
4104 ASSERT(sq == q->q_syncq); in create_syncq_putlocks()
4107 ASSERT(q->q_syncq != NULL); in create_syncq_putlocks()
4108 ASSERT(sq != q->q_syncq); in create_syncq_putlocks()
4109 sq = q->q_syncq; in create_syncq_putlocks()
4140 create_putlocks(queue_t *q, int stream) in create_putlocks() argument
4143 struct stdata *stp = STREAM(q); in create_putlocks()
4145 q = _WR(q); in create_putlocks()
4180 while (_SAMESTR(q)) { in create_putlocks()
4181 create_syncq_putlocks(q); in create_putlocks()
4184 q = q->q_next; in create_putlocks()
4186 ASSERT(q != NULL); in create_putlocks()
4187 create_syncq_putlocks(q); in create_putlocks()