Specifications

Operating System Routines
SMP$ACQUIRE
SMP$ACQUIRE
Acquires a fork lock or spinlock and enforces the appropriate IPL synchronization
on the local processor.
Module
SPINLOCKS
Macro
FORKLOCK, LOCK
Input
Location Contents
R0 Fork lock or spinlock index
Output
Location Contents
R0 Fork lock or spinlock index
Synchronization
When calling SMP$ACQUIRE, the local processor should be executing at an
IPL less than or equal to the synchronization IPL of the lock. The routine,
if necessary, immediately raises IPL to the synchronization IPL of the lock.
Violations of IPL synchronization in a full-checking multiprocessing environment
result in a SPLIPLHIGH bugcheck.
In a full-checking multiprocessing environment, if it must spin wait for the
requested lock to be released by another processor, SMP$ACQUIRE temporarily
restores the original IPL for the duration of the wait. If the original IPL was less
than IPL$_RESCHED, the spin wait occurs at IPL$_RESCHED.
SMP$ACQUIRE exits with IPL at the synchronization IPL of the lock and the
fork lock or spinlock held.
Description
The FORKLOCK and LOCK macros call SMP$ACQUIRE.
In a full-checking multiprocessing environment, SMP$ACQUIRE, having ensured
that IPL has been set to the lock’s synchronization IPL, verifies that the local
processor does not currently hold any higher-ranked locks. If a higher-ranked
lock is held, SMP$ACQUIRE issues an SPLACQERR bugcheck.
3–150