Interrogating Processes [ Process Management Programmer's Guide ] MPE/iX 5.0 Documentation
Process Management Programmer's Guide
Interrogating Processes
MPE XL provides intrinsics that enable your program to interrogate MPE XL
about the status of other processes. The process information you acquire
can assist you in controlling your process structure. Process
interrogation intrinsics are:
* FATHER
* GETPROCID
* GETORIGIN
* GETPROCINFO
* PROCTIME
* PROCINFO
Determining the Parent Process (PH Capability Required)
If your program has PH capability, it can call the FATHER intrinsic to
determine the Process Identification Number (PIN) of its parent process.
Following is an example of a FATHER intrinsic call:
PARENTPIN := FATHER;
FATHER acts as a function to return to PARENTPIN the PIN of the parent
process.
Determining a Child Process (PH Capability Required)
If your program has PH capability, it can call the GETPROCID intrinsic to
determine the PIN of a child process. The following is an example of a
GETPROCID intrinsic call:
CHILDPIN := GETPROCID (NUMSON);
GETPROCID acts as a function to return the PIN of the child process
specified by NUMSON. If NUMSON specifies a value greater than the number
of current child processes, GETPROCID returns the PIN of the current
child process that was created first.
* If NUMSON = 0, GETPROCID returns the PIN of the first child created
by the calling process.
* If NUMSON = n (n > 0), GETPROCID returns the PIN of the nth child
created by the calling process. For example, if NUMSON = 3,
GETPROCID returns to CHILDPIN the PIN of the third child process
created by the calling process.
Determining Source of Activation (PH Capability Required)
If your program has PH capability, it can call the GETORIGIN intrinsic to
determine who activated it, the parent process or a child process. An
example of a GETORIGIN intrinsic call is:
ACTIVATIONSOURCE := GETORIGIN;
GETORIGIN returns one of the following codes to ACTIVATIONSOURCE:
0= Neither the parent process nor a child process activated
the calling process with an ACTIVATE intrinsic call
1= The parent process activated the calling process
2= A child process activated the calling process
Determining Process Priority and State (PH Capability Required)
If your program has PH capability, it can call the GETPROCINFO intrinsic
to determine process management information about its parent process or a
child process. GETPROCINFO acts as a function to return a value
indicating:
* Current state of the specified process (active or suspended).
* Processes permitted to activate the specified process.
* The type of process (parent or child) that called ACTIVATE to
activate the specified process.
* The priority class of the specified process.
* The priority number in the master queue of the specified process.
This is an example of a GETPROCINFO intrinsic call:
STATINFO := GETPROCINFO (PIN);
When PIN specifies 0, GETPROCINFO returns to STATINFO process management
information about the parent of the calling process. For example, if the
value $F0482 is returned to STATINFO, it is interpreted in the following
manner:
---------------------------------------------------------------------------------
| | | |
| Bits | Setting | Meaning |
| | | |
---------------------------------------------------------------------------------
| | | |
| (31:1) | 0 | Process is currently |
| | | suspended. |
| | | |
---------------------------------------------------------------------------------
| | | |
| (29:2) | 01 | Only the parent process |
| | | can activate the process. |
| | | |
---------------------------------------------------------------------------------
| | | |
| (25:4) | 0000 | Not used. |
| | | |
---------------------------------------------------------------------------------
| | | |
| (23:2) | 01 | The parent process last |
| | | activated the process. |
| | | |
---------------------------------------------------------------------------------
| | | |
| (20:3) | 010 | Process is in CS priority |
| | | class. |
| | | |
---------------------------------------------------------------------------------
| | | |
| (16:4) | 0000 | Not used. |
| | | |
---------------------------------------------------------------------------------
| | | |
| (8:8) | 00001111 | Process has priority 15 |
| | | in master queue. |
| | | |
---------------------------------------------------------------------------------
| | | |
| (0:8) | 00000000 | Not used. |
| | | |
---------------------------------------------------------------------------------
Determining Process Information
Your program can call the PROCINFO intrinsic to determine process
management information. PROCINFO returns the same information as the
GETPROCINFO intrinsic, as well as:
* The PIN of the calling process
* A value indicating the success or failure of the PROCINFO call, and,
if unsuccessful, the nature of the error
Some of the information available through PROCINFO requires that your
program have PH capability. For a list of capability requirements
associated with each type of information available through PROCINFO,
refer to the PROCINFO description in the MPE XL Intrinsics Reference
Manual (32650-90028).
Determining Accumulated CPU Time for a Process
Your program can call the PROCTIME intrinsic to determine the total
amount of CPU time it has used since it was created. The following is an
example of a PROCTIME intrinsic call:
TIME := PROCTIME;
PROCTIME acts as a function to return to TIME the number of milliseconds
your program has been in an EXECUTING state (see Figure 1-2).
MPE/iX 5.0 Documentation