DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 
SVR5

RW_TRYWRLOCK(D3)


RW_TRYWRLOCK -- try to acquire a read/write lock in write mode

Synopsis

   #include <sys/types.h>
   #include <sys/ksynch.h>
   #include <sys/ddi.h>
   

pl_t RW_TRYWRLOCK(rwlock_t *lockp, pl_t pl);

Description

If the lock specified by lockp is immediately available in write mode (no context is holding the lock in read mode or write mode), the RW_TRYWRLOCK function sets the interrupt priority level in accordance with the value specified by pl (if required by the implementation) and acquires the lock in write mode. If the lock is not immediately available in write mode, RW_TRYWRLOCK returns without acquiring the lock.

Arguments


lockp
Pointer to the read/write lock to be acquired.

pl
The interrupt priority level to be set while the lock is held by the caller.

Return values

If the lock is acquired, RW_TRYWRLOCK returns the previous interrupt priority level (plbase - plhi). If the lock is not acquired the value invpl is returned.

Usage

Because some implementations require that interrupts that might attempt to acquire the lock be blocked on the processor on which the lock is held, portable drivers must specify a pl value that is sufficient to block out any interrupt handler that might attempt to acquire this lock. See the description of the min_pl argument to RW_ALLOC(D3) for additional discussion and a list of the valid values for pl. Implementations which do not require that the interrupt priority level be raised during lock acquisition may choose to ignore this argument.

When called from interrupt level, the pl argument must not specify a priority level below the level at which the interrupt handler is running. RW_TRYWRLOCK may be used to acquire a lock in a different order from the order defined by the lock hierarchy(D5).

Context and synchronization

Non-blockable, interrupt, user, or blockable context.

Hardware applicability

All

Version applicability

ddi: 5, 5mp, 6, 6mp, 7, 7mp, 7.1, 7.1mp, 8, 8mp

References

RW_ALLOC(D3), RW_DEALLOC(D3), RW_RDLOCK(D3), RW_TRYRDLOCK(D3), RW_UNLOCK(D3), RW_WRLOCK(D3)

``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