Specifications

Operating System Routines
SMP$RESTORE
SMP$RESTORE
Releases a single acquisition of a fork lock or spinlock held by the local processor.
Module
SPINLOCKS
Macro
FORKUNLOCK, UNLOCK
Input
Location Contents
R0 Fork lock or spinlock index
Output
Location Contents
R0 Fork lock or spinlock index
Synchronization
Upon entry, the local processor must be executing at or above the IPL at which
the lock was originally obtained. This IPL must be greater than IPL$_ASTDEL.
Violations of IPL synchronization in a full-checking multiprocessing environment
result in a SPLIPLLOW bugcheck. At exit, IPL is unchanged and the lock may or
may not be still held.
Description
The FORKUNLOCK and UNLOCK macros call SMP$RESTORE when RESTORE
is specified as the condition argument.
SMP$RESTORE first verifies that the local processor owns the specified lock. If
this is not the case, the procedure issues an SPLRSTERR bugcheck. Otherwise,
SMP$RESTORE proceeds to decrement the ownership count of the lock. If the
ownership count of the lock drops to its initial state, the procedure releases the
lock and makes it available to other processors.
3–155