putctl1(D3) putctl1(D3)
NAME
putctl1 - send a control message with a one-byte parameter to
a queue
SYNOPSIS
#include <sys/stream.h>
#include <sys/ddi.h>
int putctl1(queue_t *q, int type, int param);
Arguments
q Pointer to the queue to which the message is to be
sent.
type Message type (must be a control type).
param One-byte parameter.
DESCRIPTION
putctl1, like putctl(D3), tests the type argument to make sure
a data type has not been specified, and attempts to allocate a
message block. The param parameter can be used, for example,
to specify the signal number when an M_PCSIG message is being
sent. putctl1 fails if type is M_DATA, M_PROTO, or M_PCPROTO,
or if a message block cannot be allocated. If successful,
putctl1 calls the put(D2) routine of the queue pointed to by
q, passing it the allocated message.
Return Values
On success, 1 is returned. Otherwise, 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 and
putnextctl1(D3) 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
putctl1(D3) putctl1(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 putctl(D3) for an example of putctl1.
REFERENCES
put(D2), put(D3), putctl(D3), putnextctl(D3), putnextctl1(D3)
NOTICES
Portability
All processors
Applicability
ddi: 1, 2, 3, 4, 5, 5mp, 6, 6mp, 7, 7mp
Copyright 1994 Novell, Inc. Page 2