rwlock_init(SYNCH)
rwlock_init --
initialize a reader-writer lock
Synopsis
cc [options] -Kthread file
#include <synch.h>
int rwlock_init(rwlock_t *rwlock, int type, void *arg);
Description
rwlock_init initializes the reader-writer lock
pointed to by rwlock to be of type type
and in the unlocked state.
Once initialized, the lock can be used any number of
times without being re-initialized.
Parameters
rwlock-
pointer to reader-writer lock to be initialized
type-
USYNC_THREAD or USYNC_PROCESS
arg-
NULL (reserved for future use)
rwlock parameter
rwlock points to the reader-writer lock to be initialized.
type parameter
type can be set to one of the following values:
USYNC_THREAD-
initialize the reader-writer lock for threads within the current process
USYNC_PROCESS-
initialize the reader-writer lock for threads across processes
arg parameter
arg should be set to NULL.
It is not currently used, but is reserved for future use.
Static reader-Writer initialization
In this implementation,
a reader-writer lock can be initialized statically
if its storage is zero-filled.
In this case, the reader-writer lock is of type USYNC_THREAD,
and rwlock_init need not be called.
Return values
rwlock_init returns zero for success
and an error number for failure.
Errors
If the following condition is detected,
the contents of rwlock are not changed, and
rwlock_init returns the corresponding value:
EINVAL-
Invalid type argument specified.
Warnings
rwlock_init does not examine the rwlock argument
before initializing it.
If rwlock_init is called more than once for the same reader-writer lock,
it will overwrite its state.
It is the user's responsibility to ensure that rwlock_init
is only called once for each reader-writer lock.
Operations on locks initialized with
rwlock_init are not recursive--a thread can deadlock if
it attempts to reacquire a reader-writer lock that it already has acquired.
References
Intro(SYNCH),
rwlock(SYNCH),
rwlock_destroy(SYNCH),
rw_rdlock(SYNCH),
rw_tryrdlock(SYNCH),
rw_trywrlock(SYNCH),
rw_unlock(SYNCH),
rw_wrlock(SYNCH)
© 2005 The SCO Group, Inc. All rights reserved.
SCO OpenServer Release 6.0.0 - 01 June 2005