PREVIOUS
Chapter 3. Primary Functions
While some services are obtained via gates,
others are obtained directly from the kernel itself. Keys that are not gates
are called primary keys.
A primary key appears to the holder as a start
key. Invoking a primary key causes the kernel to perform the primary function
and return to the key provided as the last key parameter in the invocation.
Primary keys are purposely designed so it is difficult to distinguish them from
start keys; indeed some implementations may replace some of them with start
keys that provide the same function.
If the invocation is a call, a return key to the
invoker is implicitly provided as the last parameter. For other kinds of
invocations, a resume key must be explicitly passed, or there will be no
return. (It is as if the returner key were used to perform the return.)
The return is immediate unless otherwise specified; if the return is
delayed the effect is as though the kernel held the return key.
Unless otherwise specified, if a primary key is
offered a byte string shorter than that required, the string is padded on the
right with zero bytes. If it is longer and the additional bytes are zero, the
function is the same as specified in this section. (Additional non-zero bytes
are reserved.)
If a primary key is offered keys in positions not
specified on the description of the particular order code, they are ignored. It
is as if the primary key specified an entry block that did not accept these
keys.
Primary keys return kt+2 for invalid order codes.
Certain primary functions are performed by
miscellaneous keys. These keys do not designate a page or node but refer to
some object internal to the kernel. e.g. The wait key and wait objects, range
keys and range objects, and device keys and device objects. These objects are
designed so they have no state or so that their state may be reset upon a
kernel restart.
Restricted Primary Keys
Certain miscellaneous keys are designed to be limited to special
programs. Since, in a capability system like KeyKOS, all programs run with
restricted access, this restriction is one of degree rather than the supervisor
state vs. problem state type of restriction provided by the System/370. Each
restricted key description has a note as to why it is restricted.
Primary keys that do not always return immediately, e.g. device I/O ,
can be distinguished from start keys.
Invoking such a key may cause some or all of
the side effects of the key to occur even though the invocation appears not to
have occurred. In effect, when the key senses that an invocation is about to
occur, it performs its side effects (which may include waiting for some event)
and enters a special state. An invocation of the key can only proceed from the
special state; when it does, the return (of parameters saved when the side
effects were performed) occurs immediately.
Only one domain should be trying to invoke an
I/O key at any one time and it should not change its mind about what it is
doing. This is one reason that such keys are restricted.
Introduction to Primary Keys
Primary keys are introduced briefly below
(alphabetically). A full description can be found in the KeyKOS Object
Reference (KL230).
- BDEVICE
- Device Key ManagerBDEVICE allocates and deallocates device I/O keys.
- BWAIT
- A small fixed number of BWAIT keys are implemented to allow domains
to delay execution until a specific amount of time has passed.
- CDAPEEK
- A CDAPEEK key allows the holder to look at the backup version of any
page or node The backup version of a page or node is the version that would
exist if the system restarted from the last checkpoint.
- Charge Set
- A Charge Set key gives the holder access to KeyKOS's memory of which
data a domain has accessed recently. The charge set depicts a set of pages and
nodes and is used to measure the utilization of main storage and channels by a
domain.
- Charge Set Tool
- This key allows the generation of charge set keys.
- Checkpoint
- The Checkpoint key is used either to wait for or to take a complete
system-wide KeyKOS checkpoint.
- Data
- A data key returns a non-negative integer value. Data keys always
return a specific non-zero return code (x'80000001') so that domains are more
likely to sense when a key they hold designates a deleted object.
- Device I/O
- Device I/O keys are created by BDEVICE and give the holder authority
to issue restricted channel programs for the device. The following restrictions
are enforced:
Data chaining, PCI, and indirect data address words may not be
used.
Pages referenced must exist, even if SKIP is
specified.
All but the last channel-control-word must specify command
chaining; the last must not.
- Discrim
- Discrim provides a method for obtaining basic information about keys.
This information can be gathered with much more difficulty using
self-destructive or statistical techniques.
- Domain
- A domain key grants its holder the ability to extract and insert all
data and keys that would be available to a program running in the domain. It
also provides access to portions of the domain that are not automatically
available to programs running in the domain.
- Domain Tool
- A domain tool key allows the holder to identify keys associated with
domains.
- Error
- The error key is for emergency use by domains "close" to the KeyKOS
kernel. It is invoked when there is an error condition that cannot be handled
by any program outside the kernel.
- External Migrator Tool
- This key is an I/O key used to optimize migration operations. It is
designed for use by only one domain.
- Fetch
- A fetch key is a key to a node mainly used for fetching copies of
keys in the node.
- I/O Measure
- The I/O Measure key provides several measurements of I/O performance.
- IPL
- IPL is an I/O key used to restart the KeyKOS kernel.
- Journalize Page
- The journalize page key is invoked to preserve the current data in a
page across checkpoint restart. That is, the checkpoint image of the page is
updated to the current contents of the page.
- Kerrorwait
- This key returns messages about hardware errors detected by the
KeyKOS kernel.
- Keybits
- Keybits returns a bit pattern for a key whose contents may change in
new releases of KeyKOS and whose interpretation is proprietary. The bit pattern
returned for a particular key is guaranteed to be the same for a particular
version of KeyKOS.
- Meter
- A meter key is a key to a node through which the node is viewed as a
meter.
- Node
- A node key gives the holder the authority to read and write keys in
the node. A node key is also used to create attenuated keys to the node, such
as a fetch key and a meter key.
- Page
- A page key allows the storing of data into the page designated by the
key and allows the creation of a read-only key to the page.
- Peek
- A peek key allows read-only access to all of main memory. It is also
used to enable the PER hardware.
- Range
- Range keys are the primary tools of space banks. Each range
key controls a definite set of pages or nodes. A key that controls a set of
pages is called a page range key and a key that controls a set of
nodes is called a node range key.
- Returner
- Returner returns information passed to it. A domain is guaranteed
never to stall invoking Returner, which makes Returner a useful tool for
domains that provide public services and must return to their invokers without
the possibility of stalling on that return.
- Segment
- A segment key allows a construction of nodes and pages to be viewed
as a segment.
- Sense
- A sense key returns sensory versions of keys. A sensory
version of a key is a key through which information can only flow toward the
holder of the key.
NEXT