The 
KOSKernel ISL file specifies a set of interfaces
    to objects that facilitate syncronization of various KOS
    
system state information.  These interfaces provide some
    glue between condition variables, KOS process entries, KOS plugin
    entries, and KP entry objects.
    
    Note: this file uses unnecessarily arcane terminology
    developed early on in the design of the KOE.  Terms such as
    "connector" are no longer used outside the project.  When you see
    the word "connector" in this document and the corresponding ISL
    file, you can loosely read "service".
    
    
    The following non-
OBJECT types are defined by this interface:
    
- String
- An alias for ilu.CString
- StringSequence
- An alias for SEQUENCE OF String
- CID
- An alias for String, used as an ILU
	    String Binding Handle (SBH) representing a
	    connector object.
- CnType
- An alias for String, indicates a
	    connector type name.
- ConditionID
- An alias for Integer.
    The following exceptions are defined by this interface:
    
      - NotFound
      
- Raised when the requested object is not found.
	
       
- NotPermitted
      
- Raised when there is insufficient authority for requested
	operation.
    
An object to put in the namespace, so that conditions
      can be shared. A program that wants to register a trigger
      gets a Condition out of the namespace and
      passes it to the Supervisor.  This object has the
      following methods:
    
      - GetID () : ConditionID
      
- Return the identifier of the condition variable
	represented by this object.
    
The ProcessLink allows the KOS kernel to
      communicate with subprocesses. It is the dual of the
      ProcessEntry (see below). The KOS uses this
      interface to communication with the subprocess, which
      holds the true object.  This object has the following
      methods:
    
      - ASYNCRONOUS Signal
	(var : ConditionID)
      
- Queue and process a signal event on the condition
	variable specified by the identifier.
	
       
- ASYNCRONOUS Broadcast
	(var : ConditionID)
      
- Queue and process a broadcast even on the
	condition variable specified by the identifier.
    
The ProcessEntry links a subprocess with the KOS
      kernel.  The ProcessEntry true server is part
      of the kernel process, and the subprocess uses this
      object's interface to communicate with the KOS.  This
      object has the following methods:
    
      - EstablishProcessLink
	(link : ConditionID)
      
- Establish a link for the KOS to make calls to the
	subprocess.  This is called as a side-effect of
	the KPEntry.Hello() method (see below), to establish
	a (reverse) connection from the kernel to the supervisor.
	
       
- RegisterConnector
	(instance : CID, type : CnType,
	name : String)
      
- Create an entry for a connector instance in the
	KOS kernel.
	
       
- UnregisterConnector
	(instance : CID)
      
- Remove an entry for the connector instance.
	Raises NotFound if no instance for the
	provided CIDis found.  Raises
	NotPermitted if the caller does not own the connector.
       
- CreateCondition
	() : ConditionID
      
- Creates a new condition variable.
	
       
- Broadcast
	(var : ConditionID)
      
- Notify all triggers waiting on the condition
	variable var.  Raises
	NotFound if no condition variable for
	var is found.
	
       
- Signal
	(var : ConditionID)
      
- Notify exactly one trigger waiting on the
	condition variable var.  If more than
	one trigger is waiting on var, then an
	arbitrary trigger is chosen.  Raises
	NotFound if no condition variable for
	var is found.
	
       
- RegisterTrigger
	(var : ConditionID)
      
- Register a trigger on the condition variable
	var for the process associated with
	this ProcessEntry object.  Raises
	NotFound if no condition variable for
	var is found.
	
       
- UnregisterTrigger
	(var : ConnectionID)
      
- Unregister the trigger associated with condition variable
	var corresponding for the process
	associated with this ProcessEntry
	object.  Raises NotFound if no
	condition variable for var is found.
    
The kernel's communication link with a plugin subprocess.
      This object defines no new methods from its supertype,
      ProcessEntry.
    The kernel's communication link with a KP subprocess.
      This object defines the following methods in addition to
      those defined by its supertype, ProcessEntry:
    
      - Hello
	(link : ProcessLink,
	OUT ks-name : String,
	OUT kpid : KOS.KPID,
	OUT kprepr : KPRepr.Representation,
	OUT visualizer : ReportingAPI.Visualizer,
	OUT nsd : Namespace.Descriptor)
      
- 
	Initial handshake between the KP's supervisor and the
	kernel.  link is the
	ProcessLink object representing the
	Supervisor.
	 There is no explicit return value for this
	  method, but information is returned by filling
	  the output parameters as a side effect of this call:
	 
	 
	  - kos-name is the kernel's name
	  
- kpid is the KP's unique identifier, unique
	    to this kernel.
	  
- kprepr is the 
	      KP's Representation object
	  
- visualizer is the
	    Visualizer
	    object associated with the kernel.
	  
- nsd is the descriptor of a
	    
		Context object representing
	    the namespace of the KP which lives in kernel.
	
 
       
- Goodbye
	(new-kpid : KOS.KPID,
	new-kos-name : String)
      
- Called by the Supervisor when this KP has left
	the current KOS via process migration.
	new-kpid is the migrated KP's new
	identifier, unique to the destination KOS.
	new-kos-name is the name of the
	destination KOS.
	
       
- Terminated
	(reason : String, details : String)
      
- Called by the Supervisor when this KP has
	terminated.  reason will be the empty
	string if the KP terminated normally, or a string
	describing the exception that occurred if the KP
	exited due to an error.  details will
	be the exit status of the KP as a string if it
	exited normally, or the string value of the
	exception if it exited due to an error.