Sun Microsystems, Inc.
spacerspacer
spacer   www.sun.com docs.sun.com | | |  
spacer
black dot
   
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

 
      
      
Copyright 2002 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.