Annotation of ntddk/src/network/streams/in_rsrv.c, revision 1.1.1.1

1.1       root        1: /*++
                      2: 
                      3: Copyright (c) 1991  Microsoft Corporation
                      4: 
                      5: Module Name:
                      6: 
                      7:     in_rsrv.c
                      8: 
                      9: Abstract:
                     10: 
                     11:     This source file contains the read service procedure that is used by
                     12:     the insulating modules.
                     13: 
                     14: --*/
                     15: 
                     16: #include "insulate.h"
                     17: 
                     18: 
                     19: 
                     20: 
                     21: 
                     22: int
                     23: insrsrv(
                     24:     IN queue_t *rq
                     25:     )
                     26: 
                     27: /*++
                     28: 
                     29: Routine Description:
                     30: 
                     31:     This is the read service procedure of the insulating STREAMS module.
                     32: 
                     33:     It is based on the example on Unix SVR4 Programmers' Guide: STREAMS
                     34:     (page 8-7).
                     35: 
                     36: Arguments:
                     37: 
                     38:     rq      -  queue whose service procedure is being run.
                     39: 
                     40: Return Value:
                     41: 
                     42:     the constant 1.  STREAMS does not specify what the return values
                     43:     from put and service procedures should be.
                     44: 
                     45: --*/
                     46: 
                     47: {
                     48:     mblk_t *mp;
                     49: 
                     50:     while (mp = getq(rq)) {
                     51: 
                     52:         switch (mp->b_datap->db_type) {
                     53:         case M_FLUSH:
                     54:             if (*(mp->b_rptr) & FLUSHR) {
                     55:                 flushq(rq, FLUSHDATA);
                     56:             }
                     57:             putnext(rq, mp);
                     58:             return(1);
                     59: 
                     60:         //
                     61:         // high-priority messages are not subject to flow-control.
                     62:         //
                     63:         default:
                     64:             if ((mp->b_datap->db_type >= QPCTL) ||
                     65:                  canput(rq->q_next)) {
                     66:                 putnext(rq, mp);
                     67:                 continue;
                     68:             }
                     69:             putbq(rq, mp);
                     70:             return(1);
                     71:         }
                     72:     }
                     73:     return(1);
                     74: 
                     75: } // insrsrv

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.