Distributed Systems Network Management (DSNM) Subsystem Interface Development Guide
I Process Development Process
Distributed Systems Network Management (DSNM) Subsystem Interface Development
Guide—109759 3-41
Altering the Current Thread Procedure and Thread
State
PROC^X calls PROC^Y in STATE^B by:
•
Setting its return state to STATE^A.
•
Saving the old current thread procedure and state values, and setting new current
thread procedure and thread state values.
•
Signaling an event and returning to the frame to dispatch the new thread procedure
PROC^Y in the new state STATE^B.
PROC^Y checks for event _EV^STARTUP; resets the current thread procedure and
thread state to the previously saved values of PROC^X and STATE^A; and returns to the
frame to dispatch PROC^X in STATE^A.
_THREAD^PROC (PROC^X);
BEGIN
.
CASE _THREAD^STATE OF
BEGIN
_ST^INITIAL -->
_THREAD^STATE := STATE^A;
IF (error :=_PUSH^THREAD^PROCSTATE (@PROC^Y,STATE^B))
THEN ... <error> ;
CALL _SIGNAL^EVENT (_EV^STARTUP);
RETURN _RC^WAIT;
STATE^A -->
.
.
RETURN _RC^STOP;
END;
_END^THREAD^PROC;‘
_THREAD^PROC (PROC^Y);
BEGIN
.
CASE _THREAD^STATE OF
BEGIN
STATE^B -->
IF _ON (_LAST^EVENTS,_EV^STARTUP)
THEN
BEGIN
.
.
IF (error := _POP^THREAD^PROCSTATE)
THEN ... <error> ;
CALL _SIGNAL^EVENT (_EV^CONTINUE);
RETURN _RC^WAIT;
END;
END;
_END^THREAD^PROC;
Figure 3-7 illustrates using _THREAD^STATE, _SET^THREAD^PROC,
_PUSH^THREAD^PROCSTATE, and _POP^THREAD^PROCSTATE.