[Return to Top] [Standard Processes]

EROS Object Reference

Standard Processes

Process Creator

D R A F T

Description

The process creator is the basic tool for building processes. They are constructed by DCC. Process creators exist primarily for use by factories; most applications do not use process creators directly.

Every process creator has an associated brand, which is unique to that process creator. Every process root constructed by a process creator contains this brand, allowing process creators to identify their progeny.

There are two types of process creator keys: one is full featured, while the other does not permit the destruction of a process. This page describes both keys.


Operations

Check Alleged Key Type (OC = KT)

Returns the alleged type of the object.

ReplyR1AKT_DomCre: Key is a process creator key.
Destroy (OC = KT + 4)

The process creator is destroyed provided that the key conveys the requisite authority.

ResultsRC_OKThe process creator is destroyed. All outstanding keys to it are now void keys.
1

The space bank from which the process creator was crafted no longer exists.

RC_UnknownRequestThe process creator key does not convey destroy rights.
Create a Process (OC = 1)

Creates a new, unpopulated process branded by this process creator. This invocation is prompt if the passed space bank is prompt.

RequestSK0A key to an official space bank.
ReplyRK0

A process key to the new process if the operation succeeded, else a void key.

ResultsRC_OK

The process was created. RK0 is the only process key to the newly created process. The brand of this process creator has been placed in the brand slot of the process root. The process has a key registers node and any annex nodes required by the architecture. All other slots hold zero number keys.

1

SK0 is not an official space bank. No action is taken.

RC_NoMoreNodes

The required nodes could not be allocated from the space bank. All successfully allocated nodes have been returned to the space bank.

Destroy a Process (OC = 2)

Given a process key and the space bank to which the process components can be returned, disassembles the process and returns it's components to the space bank. All outstanding keys to this process become void keys. The invocation is prompt if the provided space bank is prompt.

RequestSK0A key to an official space bank.
SK1A process key to the process to be destroyed.
ResultsRC_OK

The process has been destroyed, and all of it's associated nodes have been returned to the caller-provided space bank.

1

SK0 is not an official space bank. No action is taken.

2

SK1 names a process whose brand does not match the brand of this process creator. No action is taken.

3

The attempt to destroy one of the constituents failed, because the provided space bank did not accept it. Depending on when this error occurred, the process may remain valid or be malformed. Outstanding keys to it may or may not be destroyed.

Destroy Caller and Return (OC = 3)

The process designated by SK3 is destroyed. This allows a process to destroy itself while returning to its invoker (e.g. in response to a Destroy order). All outstanding keys to this process become void keys. The invocation is prompt if the provided space bank is prompt.

RequestSK0A key to an official space bank.
SK2

A return key to the process we should return to.

SK3

A resume key to the process to be destroyed.

W

The order code that should be used when invoking SK2.

ResultsRC_OK

The process has been destroyed, and all of it's associated nodes have been returned to the caller-provided space bank. The process creator returns to the key designated by SK2 using the provided order code.

1

SK0 is not an official space bank. No action is taken.

2

SK3 names a process whose brand does not match the brand of this process creator. No action is taken.

3

The attempt to destroy one of the constituents failed, because the provided space bank did not accept it. Depending on when this error occurred, the process may remain valid or be malformed. Outstanding keys to it may or may not be destroyed.

Remove Destroy Rights (OC = 8)

Returns a start key to the process creator that does not convey destroy rights to the holder.

ReplyRK0

A process creator key to this process creator that does not convey destroy rights.

ResultsRC_OK

Operation completed successfully.

Amplify Gate Key (OC = 16)

Returns a process key to the process named by SK0.

RequestSK0A gate key to a process
ResponseRK0

A process key to the process named by SK0 if the operation succeeded, else a void key.

R1

0: brand did not match.

1: brand matched. the gate key is a start key.

2: brand matched. the gate key is a resume key.

Key Info field if gate key, else zero. If the gate key is a resume key, the key info field may be either zero or one:

    0: Normal resume capability.

    1: fault capability.

ResultsRC_OKOperation succeeded.
RC_RequestErrorKey in SK0 was not a gate key.
Amplify Address Space with Gate Key Keeper (OC = 17)

Returns a process key to the keeper of SK0 and a node key to the red address space node denoted by SK0.

RequestSK0A key to a red address space.
ResponseRK0A process key to the process named by SK0 if the operation succeeded, else a void key.
RK1A node key to red address space node named by SK0 if the operation succeeded, else a void key.
R10: brand did not match.

1: brand matched. the gate key is a start key.

2: brand matched. the gate key is a resume key.

Key Info field if gate key, else zero. If the gate key is a resume key, the key info field may be either zero or one:
    0: Normal resume capability.

    1: fault capability.

ResultsRC_OKOperation succeeded.
RC_RequestErrorSK0 is not a red address space key, SK0 is no-call, or SK0's keeper key is not a gate key.

Copyright 1998, 2001, Jonathan Shapiro. All rights reserved. For terms of redistribution, see the GNU General Public License