bcanputnext(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  can-
     putnext()  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


Man(1) output converted with man2html