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.(*)
Parsed from file GE_PARALLELUPS.mib.txt
Company: ge
Module: GE_PARALLELUPS
Vendor: IMV Victron bv
Module: GE_PARALLELUPS
[Automatically extracted from oidview.com]
upsTestSpinLock_second 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.(*)" ::= { upsTest_second 2 }
OID | Name | Sub children | Sub Nodes Total | Description |
---|---|---|---|---|
1.3.6.1.4.1.818.1.1.12.7.2.0 | 0 | 0 | 0 | upsTestSpinLock_second |
OID | Name | Sub children | Sub Nodes Total | Description |
---|---|---|---|---|
1.3.6.1.4.1.818.1.1.12.7.1 | upsTestId_second | 1 | 1 | The test is named by an OBJECT IDENTIFIER which allows a standard mechanism for the initiation of tests, including the well known… |
1.3.6.1.4.1.818.1.1.12.7.3 | upsTestResultsSummary_second | 1 | 1 | The results of the current or last UPS diagnostics test performed. The values for donePass(1), doneWarning(2), and doneError(3) … |
1.3.6.1.4.1.818.1.1.12.7.4 | upsTestResultsDetail_second | 1 | 1 | Additional information about upsTestResultsSummary. If no additional information available, a zero length string is returned.(*) |
1.3.6.1.4.1.818.1.1.12.7.5 | upsTestStartTime_second | 1 | 1 | The value of sysUpTime at the time the test in progress was initiated, or, if no test is in progress, the time the previous test … |
1.3.6.1.4.1.818.1.1.12.7.6 | upsTestElapsedTime_second | 1 | 1 | The amount of time, in TimeTicks, since the test in progress was initiated, or, if no test is in progress, the previous test took… |
1.3.6.1.4.1.818.1.1.12.7.7 | upsWellKnownTests_second | 5 | 5 | None |