man pages section 9: DDI and DKI Kernel Functions

Exit Print View

Updated: July 2014
 
 

datamsg(9F)

Name

datamsg - test whether a message is a data message

Synopsis

#include <sys/stream.h>
#include <sys/ddi.h>

int datamsg(unsigned char type);

Interface Level

Architecture independent level 1 (DDI/DKI).

Parameters

type

The type of message to be tested. The db_type field of the datab(9S) structure contains the message type. This field may be accessed through the message block using mp->b_datap->db_type.

Description

The datamsg() function tests the type of message to determine if it is a data message type (M_DATA, M_DELAY, M_PROTO , or M_PCPROTO).

Return Values

datamsg returns

1

if the message is a data message

0

otherwise.

Context

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

Examples

The put(9E) routine enqueues all data messages for handling by the srv (9E) (service) routine. All non-data messages are handled in the put(9E) routine.

1 xxxput(q, mp)
2      queue_t *q;
3      mblk_t *mp;
4 {
5    if (datamsg(mp->b_datap->db_type)) {
6            putq(q, mp);
7            return;
8    }
9    switch (mp->b_datap->db_type) {
10    case M_FLUSH:
		       …
11    }
12 }

See also

put(9E), srv(9E), allocb(9F), datab(9S), msgb(9S)

Writing Device Drivers for Oracle Solaris 11.2

STREAMS Programming Guide