MODULE ProcessInfo0;
IMPORT
Objects;
TYPE
ProcessArray* = ARRAY OF Objects.Process;
PROCEDURE GetProcesses*(VAR array : ProcessArray; VAR nofProcesses : LONGINT);
VAR thread : Objects.Process; length : LONGINT;
BEGIN
nofProcesses := 0;
length := LEN(array);
thread := Objects.processes;
WHILE (thread # NIL) & (nofProcesses < length) DO
IF (thread.mode # Objects.Terminated) THEN
array[nofProcesses] := thread(Objects.Process);
INC(nofProcesses);
END;
thread := thread.processLink;
END;
END GetProcesses;
PROCEDURE GetProcess*(id : LONGINT) : Objects.Process;
VAR process, thread : Objects.Process;
BEGIN
process := NIL;
thread := Objects.processes;
WHILE (thread # NIL) & (process = NIL) DO
IF thread.id = id THEN process := thread; END;
thread := thread.processLink;
END;
RETURN process;
END GetProcess;
END ProcessInfo0.