Interface for qBeta module object
MonitorSystem: obj
%domain_boundary
%module LIB.BasicSystem
%public
System: LIB.BasicSystem.basicSystem
%public
Semaphore:
%globals P_status,SQS
cnt: var integer
M: obj Lock
Q: obj ProcessQueue
%public
init:
wait:
theActive: ref BasicProcess
signal:
P: ref BasicProcess
Process: BasicProcess
%globals SQS,monitor,immutable,console
-- we need to find out how to restrict Process to have no
-- visible interface. Perhaps rethink the use of interface to
-- define mena that only patterns in an interface are public
-- alle other patterns (and data items) are private
%public
start::
P: ref Process
Monitor:
%globals P_status,SQS
%interface entry
mutex: obj Semaphore
_V: var integer
%public
init:
entry:
%kind method
%arguments immutable
wait:
cond: var boolean
loop: obj