HP OpenVMS Systemsask the wizard |
The Question is: We have a process in RWAST state. Until the system will be booted (it's a production system), we are only monitoring that process. In the monitor (com file), we used the f$getjpi lexical function. And the question is: Why the resualt of that lexical with this process gives a MWAIT result, while the process is in RWAST for days? ------------------------------------------------ Some snapshots: >sh sys/stat=rwast OpenVMS V7.1 on node F18WS4 4-FEB-2001 08:54:48.42 Uptime 88 16:06:45 Pid Process Name State Pri I/O CPU Page flts Pages 20E3662F RIA.sc.1.4 RWAST 7 23308 0 00:01:39.80 3999 5549 >state == f$getjpi("20E3662F","state") >sh sym state STATE == "MWAIT" Thx, Iris The Answer is : The state "MWAIT" stands for "Miscellaneous WAIT state". This is a generic category which includes a number of "sub states", one of which is RWAST. RWAST stands for "Resource Wait Asynchronous System Trap" which indicates that the process is waiting for a resource, the availability of which is expected to be reported by an AST being delivered to the process. For processes in MWAIT state, the substate is indicated by the value in the event flag wait mask (JPI code EFWM). The values of the substates can be found in the macro $RSNDEF from LIB.MLB Some utilities, like SHOW SYSTEM, decode the MWAIT states into substates. Others do not. Still others, such as SHOW PROCESS/CONTINUOUS, report an MWAIT process as "suspended". The following command procedure will determine the state string for a process, including substates of MWAIT. Note that since F$GETJPI needs to be called twice, it is possible for the target process to change states between the calls. RSN states are derived from an OpenVMS/Alpha V7.2-1 system. In this example the process state is printed, returning the string to the caller left as an exercise for the reader. PSTATE.COM $ IF p1.EQS."" THEN INQUIRE p1 "PID" $ state=F$GETJPI(p1,"STATE") $ efwm=F$GETJPI(p1,"EFWM") $ IF state.EQS."MWAIT" THEN state=F$ELEMENT(efwm,"/",- "/RWAST/RWMBX/RWNPG/RWPFF/RWPAG/RWBRK/RWIMG/RWQUO/RWLCK/RWSWP"+- "/RWMPE/RWMPB/RWSCS/RWCLU/RWCAP/RWCSV/RWSNP/RWXFR/RWINS/RWEXH/") $ IF state.EQS."".OR.state.EQS."/" THEN state="MWAIT" ! Unrecognised EFWM value $ SHOW SYM state $ EXIT Related topics here in Ask The Wizard include (6), (2347), (5841), and (7120).
|