putnextctl1(D3) putnextctl1(D3)
NAME
putnextctl1 - send a control message with a one byte parameter
to a queue
SYNOPSIS
#include <sys/stream.h>
#include <sys/ddi.h>
int putnextctl1(queue_t *q, int type, int param);
Arguments
q Pointer to the queue from which the message is to be
sent.
type Message type (must be a control type).
param One byte parameter.
DESCRIPTION
putnextctl1 tests the type argument to make sure a data type
has not been specified, and then attempts to allocate a
message block. putnextctl1 fails if type is M_DATA, M_PROTO,
or M_PCPROTO, or if a message block cannot be allocated. If
successful, putnextctl calls the put(D2) procedure of the
queue pointed to by q->q_next, passing it the allocated
message with the one byte parameter specified by param.
Return Values
Upon successful completion, putnextctl1 returns 1. If type is
a data type, or if a message block cannot be allocated, 0 is
returned.
USAGE
In multithreaded drivers, the q argument to putctl1(D3) and
putnextctl1 may not reference q_next (for example, an argument
of q->q_next is erroneous in a multithreaded driver and is
disallowed by the DDI/DKI). putnextctl1(q, type) is provided
as a multiprocessor-safe equivalent to the common call
putctl1(q->q_next, type), which is no longer allowed.
Level
Base or Interrupt.
Synchronization Constraints
Does not sleep.
Copyright 1994 Novell, Inc. Page 1
putnextctl1(D3) putnextctl1(D3)
Driver-defined basic locks, read/write locks, and sleep locks
may not be held across calls to this function.
The caller cannot have the stream frozen [see freezestr(D3)]
when calling this function.
Examples
See putnextctl(D3) for an example of putnextctl1.
REFERENCES
put(D2), put(D3), putctl(D3), putctl1(D3), putnextctl(D3)
NOTICES
Portability
All processors
Applicability
ddi: 3, 5, 5mp, 6, 6mp, 7, 7mp
Copyright 1994 Novell, Inc. Page 2