flushq(9f) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

flushq(9f)

flushq(9F)                     Kernel Functions                     flushq(9F)



NAME
       flushq - remove messages from a queue

SYNOPSIS
       #include <sys/stream.h>

       void flushq(queue_t *q, int flag);

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

PARAMETERS
       q       Pointer to the queue to be flushed.


       flag    Valid flag values are:

               FLUSHDATA    Flush  only  data messages (types M_DATA, M_DELAY,
                            M_PROTO, and M_PCPROTO).


               FLUSHALL     Flush all messages.



DESCRIPTION
       The flushq() function frees messages and their associated  data  struc‐
       tures  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 potentially has messages
       on the queue. If it receives an M_FLUSH 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.


               1  /*
               2   * Module write-side put procedure.
               3   */
               4  xxxwput(q, mp)
               5      queue_t *q;
               6      mblk_t *mp;
               7  {
               8   switch(mp->b_datap->db_type) {
               9      case M_FLUSH:
              10        if (*mp->b_rptr & FLUSHR)
              11             flushq(RD(q), FLUSHALL);
              12        if (*mp->b_rptr & FLUSHW)
              13             flushq(q, FLUSHALL);
              14        putnext(q, mp);
              15        break;
                        . . .
              16   }
              17  }


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


       Writing Device Drivers in Oracle Solaris 11.4


       STREAMS Programming Guide



Oracle Solaris 11.4               16 Jan 2006                       flushq(9F)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3