allocate and initialize a read/write lock
rwlock_t *RW_ALLOC(uchar_t hierarchy, pl_t min_pl, lkinfo_t *lkinfop,
RW_ALLOC dynamically allocates and initializes an instance of a
The lock is initialized to the unlocked state.
If flag is set to KM_SLEEP, the caller will sleep if
necessary until sufficient memory is available.
If flag is set to KM_NOSLEEP, the caller will not sleep,
but RW_ALLOC will return NULL if sufficient memory is not
Hierarchy value which asserts the order in which this lock will be acquired
relative to other basic and read/write locks.
Minimum priority level argument which asserts the minimum priority level that
will be passed in with any attempt to acquire this lock
Pointer to a
Specifies whether the caller is willing to sleep
waiting for memory.
Upon successful completion, RW_ALLOC returns a pointer to the newly
If KM_NOSLEEP is specified and sufficient memory is not immediately
available, RW_ALLOC returns a NULL pointer.
lk_name member of the
described on the
manual page points to a character string
defining a name that will be associated with the lock for the
purpose of statistics gathering.
The name should begin with the driver prefix and should
be unique to the lock
or group of locks for which the driver wishes to collect a uniquely
identifiable set of statistics
(that is, if a given name is shared by a group
of locks, the statistics of individual locks within the group will not
be uniquely identifiable).
There are no flags defined within the
structure for use with RW_ALLOC.
The lkinfop pointer is recorded in a statistics
buffer along with the lock
statistics when the driver is compiled with the DEBUG
compilation options defined.
lkinfo structure may be shared among multiple read/write
locks and basic locks but a
lkinfo structure may not be shared between a
read/write lock and a sleep lock.
The caller must ensure that the
lk_pad members of the
lkinfo structure are zeroed out before passing it to RW_ALLOC.
Under the _MPSTATS compilation option, if KM_NOSLEEP is
specified and sufficient memory can be immediately allocated for the lock itself
but not for an accompanying statistics buffer, RW_ALLOC will
return a pointer to the allocated lock but individual statistics will not be
collected for the lock.
Context and synchronization
If flag is set to KM_NOSLEEP,
non-blockable, initialization, or interrupt
If flag is set to KM_SLEEP,
5, 5mp, 6, 6mp, 7, 7mp, 7.1, 7.1mp, 8, 8mp
``Spin locks (DDI)'' in HDK Technical Reference
19 June 2005
© 2005 The SCO Group, Inc. All rights reserved.
OpenServer 6 and UnixWare (SVR5) HDK - June 2005