Sun Microsystems Logo
Products and Services
 
Support and Training
 
 

A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  
 
Kernel Functions for Driverscanputnext(9F)


NAME

 canputnext, bcanputnext - test for room in next module's message queue

SYNOPSIS

 
#include <sys/stream.h> 
int canputnext(queue_t *q);
 int bcanputnext(queue_t *q, unsigned char pri);

INTERFACE LEVEL

 

Architecture independent level 1 (DDI/DKI).


PARAMETERS

 
q
Pointer to a message queue belonging to the invoking module.
pri
Minimum priority level.

DESCRIPTION

 

The invocation canputnext(q); is an atomic equivalent of the canput(q->q_next); routine. That is, the STREAMS framework provides whatever mutual exclusion is necessary to insure that dereferencing q through its q_next field and then invoking canput(9F) proceeds without interference from other threads.

bcanputnext(q, pri); is the equivalent of the bcanput(q->q_next, pri); routine.

canputnext(q); and bcanputnext(q, pri); should always be used in preference to canput(q->q_next); and bcanput(q->q_next, pri); respectively.

See canput(9F) and bcanput(9F) for further details.


RETURN VALUES

 
1
If the message queue is not full.
0
If the queue is full.

CONTEXT

 

canputnext() and bcanputnext() can be called from user or interrupt context.


WARNINGS

 

Drivers are responsible for both testing a queue with canputnext() or bcanputnext() and refraining from placing a message on the queue if the queue is full.


SEE ALSO

 

bcanput(9F), canput(9F)

Writing Device Drivers

STREAMS Programming Guide



SunOS 5.9Go To TopLast Changed 31 Jan 1993


Updated: 2004-01-16, 19:42