Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ RW_RDLOCK(D3DK) — Motorola System V 88k Release 4 Version 4.3

Media Vault

Software Library

Restoration Projects

Artifacts Sought

RW_RDLOCK(D3DK)  —  

NAME

RW_RDLOCK − acquire a read/write lock in read mode .IX \f4RW_RDLOCK\fP(D3DK)

SYNOPSIS

#include <sys/types.h>
#include <sys/ksynch.h>
pl_t RW_RDLOCK(rwlock_t ∗lockp, pl_t pl);

ARGUMENTS

lockpPointer to the read/write lock to be acquired. 

plThe interrupt priority level to be set while the lock is held by the caller.  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(D3DK) 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. 

DESCRIPTION

RW_RDLOCK sets the interrupt priority level in accordance with the value specified by pl (if required by the implementation) and acquires the lock specified by lockp in read mode.  If the lock cannot be acquired immediately in read mode, the caller will wait until the lock is available in read mode.  (A read/write lock is available in read mode when the lock is not held by any context or when the lock is held by one or more readers and there are no waiting writers).  It is implementation defined whether the caller will block during the wait.  Some implementations may cause the caller to spin for the duration of the wait, while on others the caller may block at some point. 

RETURN VALUE

Upon acquiring the lock, RW_RDLOCK returns the previous interrupt priority level (plbase - plhi). 

LEVEL

Base or Interrupt. 

NOTES

Read/write locks are not recursive.  A call to LOCK attempting to acquire a lock that is currently held by the calling context may result in deadlock.  Calls to RW_RDLOCK should honor the ordering defined by the lock hierarchy [see RW_ALLOC(D3DK)] in order to avoid deadlock.  Driver defined sleep locks may be held across calls to this function. Driver defined basic locks and read/write locks may be held across calls to this function subject to the hierarchy and recursion restrictions described above. When called from interrupt level, the pl argument must not specify a priority level below the level at which the interrupt handler is running. 

SEE ALSO

RW_ALLOC(D3DK), RW_DEALLOC(D3DK), RW_TRYRDLOCK(D3DK), RW_TRYWRLOCK(D3DK), RW_UNLOCK(D3DK), RW_WRLOCK(D3DK)

DDI/DKI

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026