Interface for qBeta module object
BasicSystem: obj
%module Containers,LIB.StringLib,LIB.containers.QueueLib
%include Containers,LIB.StringLib
%public
BasicSystem:
%public
Lock:
%globals
dummy: var integer
bbb: var integer
free_M: var integer
%Public
id: ref String
init:
get:
res: var integer
i: var integer
loop: obj
--disable
free:
BasicProcess:
%Public
in id: ref String
status: var integer
start:< -- need id as argument
Scheduler:
%Public
active: ref BasicProcess
thisCore:
-- BasicSystem:: Core should be mved to here!
%basic
out C: ref core
Core:
-- should be moved to BETA,
-- but depends on Scheduler
-- could perhaps just be Object?
-- but for thisCore.main.active, active is defined in Scheduler
-- perhaps a super scheduler should be defined in BETA.xbeta
-- main: ref BasicProces, thus also BasicProcess in BETA
-- or perhaps thisCore here?
%core
%Public
main: ref Scheduler
attach:
in M: ref Scheduler
noOfCores: val
cores: obj
C1: ref Core
C2: ref Core
C3: ref Core
C4: ref Core
-- should be array
init:
S: ref Scheduler
P_status: obj
%globals
%Public
ACTIVE: val
WAITING: val
TERMINATED: val
ProcessQueue: LIB.Containers.QueueLib.Queue
--%globals
%Public
displayx:
sch: obj
L: obj Lock
M: var integer
%Public
entry:
add:
dcr:
running:
out B: var Boolean
SQS: obj
Q: obj ProcessQueue
L: obj Lock
V: var integer
W: var integer
%Public
entry:
init: entry
insert: entry
in P: ref BasicProcess
removeNext:
out P: ref BasicProcess
remove: entry
in P: ref BasicProcess
isEmpty:
out B: var Boolean
display: entry
addWaiting: entry
dcrWaiting: entry
hasWaiting:
out B: var boolean
coreLock: obj Lock
console: obj
L: obj Lock
%public
display:
keyboard: obj BasicProcess("Keyboard")
B: obj Indexed(,integer)
next: var integer
top: var integer
echo: var Boolean
%Public
Kscan:
loopB: obj
get:
in caller: ref BasicProcess
out ch: var char
waitForChar: obj
init: