The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

qreply (9)
  • >> qreply (9) ( Solaris man: Ядро )
  •  

    NAME

    qreply - send a message on a stream in the reverse direction
     
    

    SYNOPSIS

    #include <sys/stream.h>
    
    
    
    void qreply(queue_t *q, mblk_t *mp);
    

     

    INTERFACE LEVEL

    Architecture independent level 1 (DDI/DKI).  

    PARAMETERS

    q

    Pointer to the queue.

    mp

    Pointer to the message to be sent in the opposite direction.

     

    DESCRIPTION

    The qreply() function sends messages in the reverse direction of normal flow. That is, qreply(q, mp) is equivalent to putnext(OTHERQ(q), mp).  

    CONTEXT

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

    EXAMPLES

    Example 1 Canonical Flushing Code for STREAMS Drivers.

    This example depicts the canonical flushing code for STREAMS drivers. Assume that the driver has service procedures so that there may be messages on its queues. See srv(9E). Its write-side put procedure handles M_FLUSH messages by first checking the FLUSHW bit in the first byte of the message, then the write queue is flushed (line 8) and the FLUSHW bit is turned off (line 9). See put(9E). If the FLUSHR bit is on, then the read queue is flushed (line 12) and the message is sent back up the read side of the stream with the qreply() function (line 13). If the FLUSHR bit is off, then the message is freed (line 15). See the example for flushq(9F) for the canonical flushing code for modules.

    1  xxxwput(q, mp)
    2    queue_t *q;
    3    mblk_t *mp;
    4  {
    5           switch(mp->b_datap->db_type) {
    6           case M_FLUSH:
    7           if (*mp->b_rptr & FLUSHW) {
    8                  flushq(q, FLUSHALL);
    9                  *mp->b_rptr &= ~FLUSHW;
    10                }
    11           if (*mp->b_rptr & FLUSHR) {
    12                  flushq(RD(q), FLUSHALL);
    13                       qreply(q, mp);
    14           } else {
    15                       freemsg(mp);
    16                }
    17           break;
                  . . .
    18     }
    19  }
    

     

    SEE ALSO

    put(9E), srv(9E), flushq(9F), OTHERQ(9F), putnext(9F)

    Writing Device Drivers

    STREAMS Programming Guide


     

    Index

    NAME
    SYNOPSIS
    INTERFACE LEVEL
    PARAMETERS
    DESCRIPTION
    CONTEXT
    EXAMPLES
    SEE ALSO


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру