OID | 1.3.6.1.2.1.33.1.7.2 |
Module | UPS-MIB (MGE) |
Nom | upsTestSpinLock |
Acces | readwrite |
Status | mandatory |
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. |
Syntaxe | Integer32 (0...2147483647) |
Module | UPS-MIB (ietf) |
Nom | upsTestSpinLock |
Acces | readwrite |
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. |
Syntaxe | TestAndIncr (SNMPv2-TC) |