Guardian Programmer's Guide

Table Of Contents
Writing a Command-Interpreter Monitor ($CMON)
Guardian Programmer’s Guide 421922-014
23 - 34
Controlling Which CPU a Process Can Run In
In the command-interface program:
STRUCT CPU^CHANGESTATUS^MSG;
BEGIN
INT MSGCODE; !value 62
INT PROCESSOR; !processor number to change status
INT STATUS; !new status; 1 for move to
! priority-response list, 0 for
! move to non-priority-response
! list
END;
.
.
!Set up the CPU^CHANGESTATUS^MSG message and send to $CMON:
CPU^CHANGESTATUS^MSG.MSGCODE := 62;
CPU^CHANGESTATUS^MSG.PROCESSOR := CPU^NUMBER;
CPU^CHANGESTATUS^MSG.STATUS := NEW^STATUS;
WCOUNT := $LEN(CPU^CHANGESTATUS^MSG);
CALL WRITEREADX(CMON^NUM,CPU^CHANGESTATUS^MSG,WCOUNT,RCOUNT,
BYTES^READ);
In the $CMON process:
INT CPU^LIST[0:5];
CALL READUPDATEX(RECV^NUM,SBUFFER,RCOUNT,BYTES^READ);
IF BUFFER[0] = 62 THEN
BEGIN
! Find out if sender is in group 255:
CALL FILE_GETRECEIVEINFO_(INFO);
P^HANDLE ':=' INFO[6] FOR 10;
ERROR := PROCESS_GETINFO_(P^HANDLE,
!file^name:maxlen!,
!file^name^len!,
!priority!,
!moms^processhandle!,
!hometerm:maxlen!,
!hometerm^len!,
!process^time!,
!caid!,
PAID);
IF PAID.<0:7> = 255 THEN
END;
! Process request if from operations group:
CPU^LIST[BUFFER[1]] := BUFFER[2];
.
.