bcanputnext(D3) bcanputnext(D3)
NAME
bcanputnext - test for flow control in a specified priority
band
SYNOPSIS
#include <sys/types.h>
#include <sys/stream.h>
#include <sys/ddi.h>
int bcanputnext(queue_t *q, uchar_t pri);
Arguments
q Pointer to a message queue.
pri Message priority.
DESCRIPTION
bcanputnext searches through the stream (starting at q-
>q_next) until it finds a queue containing a service routine,
or until it reaches the end of the stream. If found, the
queue containing the service routine is tested to see if a
message in priority band pri can be enqueued. If the band is
full, bcanputnext marks the queue to automatically back-enable
the caller's service routine when the amount of data in
messages on the queue has reached its low water mark.
Return Values
bcanputnext returns 1 if a message of priority pri can be sent
in the stream, or 0 if the priority band is flow-controlled.
If bcanputnext reaches the end of the stream without finding a
queue with a service routine, then it returns 1.
USAGE
The driver writer is responsible for both testing a queue with
bcanputnext and refraining from placing a message on the queue
if bcanputnext fails.
It is possible because of race conditions to test for room
using bcanputnext and get an indication that there is room for
a message, and then have the queue fill up before subsequently
enqueuing the message, causing a violation of flow control.
This is not a problem since the violation of flow control in
this case is bounded.
If pri is 0, the bcanputnext call is equivalent to a call to
canputnext.
Copyright 1994 Novell, Inc. Page 1
bcanputnext(D3) bcanputnext(D3)
Level
Initialization, Base or Interrupt.
Synchronization Constraints
Does not sleep.
Driver defined basic locks, read/write locks, and sleep locks
may be held across calls to this function.
The caller cannot have the stream frozen [see freezestr(D3)]
when calling this function.
REFERENCES
bcanput(D3), canput(D3), canputnext(D3), putbq(D3),
putnext(D3)
NOTICES
Portability
All processors
Applicability
ddi: 3, 5, 5mp, 6, 6mp, 7, 7mp
Copyright 1994 Novell, Inc. Page 2