svcadm(8)을 검색하려면 섹션에서 8 을 선택하고, 맨 페이지 이름에 svcadm을 입력하고 검색을 누른다.
qreply(9f)
qreply(9F) Kernel Functions qreply(9F)
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 mes‐
sages 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), OTHERQ(9F), flushq(9F), putnext(9F)
Writing Device Drivers in Oracle Solaris 11.4
STREAMS Programming Guide
Oracle Solaris 11.4 16 Jan 2006 qreply(9F)