Description:
|
upsTestSpinLock-fourth OBJECT-TYPE
SYNTAX TestAndIncr
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"A spin lock on the test subsystem. The spinlock is used as follows.
Before starting a test, a manager-station should make sure that a test is not in progress as follows:
try-again:
get (upsTestSpinLock)
while (upsTestResultsSummary == inProgress) {
/* loop while a test is running for another manager */
short delay get (upsTestSpinLock) }
lock-value = upsTestSpinLock
/* no test in progress, start the test */
set (upsTestSpinLock = lock-value, upsTestId = requested-test)
if (error-index == 1) { /* (upsTestSpinLock failed) */
/* if problem is not access control, then some other manager slipped in ahead of us */
goto try-again }
if (error-index == 2) { /* (upsTestId) */
/* cannot perform the test */
give up }
/* test started ok */
/* wait for test completion by polling upsTestResultsSummary */
get (upsTestSpinLock, upsTestResultsSummary, upsTestResultsDetail)
while (upsTestResultsSummary == inProgress) {
short delay get (upsTestSpinLock, upsTestResultsSummary, upsTestResultsDetail) }
/* when test completes, retrieve any additional test results */
/* if upsTestSpinLock == lock-value + 1, then these are our test */
/* results (as opposed to another manager's */
The initial value of upsTestSpinLock at agent initialization shall be 1.(*)"
|
|