MyWebUniversity.com Home Page
 



OpenSolaris man pages main menu


Kernel Functions for Drivers                           flushq(9F)



NAME
     flushq - remove messages from a queue

SYNOPSIS
     #include 



     void flushq(queuet *q, int flag);


INTERFACE LEVEL
     Architecture independent level 1 (DI/DKI).

PARAMETERS
     q       Pointer to the queue to be flushed.


     flag    Valid flag values are:


     FLUSHDATA    Flush only data messages (types MDATA  MDELAY
                  MPROTO and MPCPROTO).


     FLUSHAL     Flush all messages.


DESCRIPTION
     The flushq() function frees messages  and  their  associated
     data structures by calling freemsg(9F). If the queue's count
     falls below the low water mark and the queue was blocking an
     upstream  service  procedure,  the  nearest upstream service
     procedure is enabled.

CONTEXT
     The flushq() function can be called from user, interrupt, or
     kernel context.

EXAMPLES
     Example 1 Using flushq()


     This example depicts the canonical flushing code for STREAMS
     modules. The module has a write service procedure and poten-
     tially has messages on the queue. If it receives an  MFLUSH
     message,  and  if  the FLUSHR bit is on in the first byte of
     the message (line 10), then the read queue is flushed  (line
     11). If the FLUSHW bit is on (line 12), then the write queue
     is flushed (line 13). Then the message is  passed  along  to
     the next entity in the stream (line 14). See the example for
     qreply(9F) for the canonical flushing code for drivers.



SunOS 5.11          Last change: 16 Jan 2006                    1






Kernel Functions for Drivers                           flushq(9F)



             1  /*
             2   * Module write-side put procedure.
             3   */
             4  xxxwput(q, mp)
             5      queuet *q;
             6      mblkt *mp;
             7  {
             8   switch(mp->bdatap->dbtype) {
             9      case MFLUSH:
            10        if (*mp->brptr & FLUSHR)
            11             flushq(RD(q), FLUSHAL);
            12        if (*mp->brptr & FLUSHW)
            13             flushq(q, FLUSHAL);
            14        putnext(q, mp);
            15        break;
                      . . .
            16   }
            17  }


SEE ALSO
     flushband(9F), freemsg(9F), putq(9F), qreply(9F)


     Writing Device Drivers STREAMS Programming Guide






























SunOS 5.11          Last change: 16 Jan 2006                    2



OpenSolaris man pages main menu

Contact us      |       About us      |       Term of use      |       Copyright © 2000-2010 MyWebUniversity.com ™