Guardian Programmer's Guide

Table Of Contents
Writing a Command-Interpreter Monitor ($CMON)
Guardian Programmer’s Guide 421922-014
23 - 35
Controlling Which CPU a Process Can Run In
IF BUFFER[0] = -52 THEN
BEGIN
PROCESSCREATION^MSG ':=' SBUFFER FOR
$LEN(PROCESSCREATION^MSG);
!Limit process priority to 175:
IF PROCESSCREATION^MSG.PRIORITY > 175
THEN PROCESSCREATION^ACCEPT.PRIORITY := 175
ELSE PROCESSCREATION^ACCEPT.PRIORITY := 0; ! Accept priority
! Allocate priority-response processor if priority over 150,
! otherwise allocate non-priority-response processor:
IF PROCESSCREATION^MSG.PRIORITY > 150
THEN
BEGIN
DO
BEGIN
PRIORITY^CPU := PRIORITY^CPU + 1;
IF PRIORITY^CPU = 6 THEN PRIORITY^CPU := 0;
END
UNTIL CPU^LIST[PRIORITY^CPU] = 1;
PROCESSCREATION^ACCEPT.PROCESSOR := PRIORITY^CPU;
END
ELSE
BEGIN
DO
BEGIN
NONPRIORITY^CPU := NONPRIORITY^CPU + 1;
IF NONPRIORITY^CPU = 6 THEN NONPRIORITY^CPU := 0;
END
UNTIL CPU^LIST[NONPRIORITY^CPU] = 0;
PROCESSCREATION^ACCEPT.PROCESSOR := NONPRIORITY^CPU;
END;
! Do not change the program-file name:
PROCESSCREATION^ACCEPT.PROGNAME ':='
PROCESSCREATION^MSG.PROGNAME FOR 12;
! Reply to the TACL process:
CALL REPLYX(PROCESSCREATION^ACCEPT,
$LEN(PROCESSCREATION^ACCEPT));
END;