Identify (OC = 2)Determine whether an object is contained in the given range.
| Request | SK0 | The key to be examined. |
| Reply | R1 | Indicates the base type of the object named by this capability. Value is meaningless unless result code is RC_OK.| Value | Meaning | | 1 | Object is a page | | 2 | Object is a capability page | | 3 | Object is a node |
|
| R2 | The low-order portion of the value to be passed to Get Object to fabricate a strong key to the object designated by this key, or 0. |
| R3 | The high-order portion of the value to be passed to Get Object to fabricate a strong key to the object designated by this key, or 0. |
| Result | RC_OK | Success. The returned offset is the offset of the object within the range. |
| 1 | Key was not within the range. The returned offset value is zero. |
Rescind (OC = 3)Rescind all outstanding keys associated with the passed object.
Note: The rescind operation requires a read-write key to the object. If necessary, the holder of the range key can obtain such a key by first using the Identify operation, constructing a new key, and rescinding that key.
| Request | SK0 | The key to be rescinded. |
| Result | RC_OK | Success. All outstanding keys to the object are now void keys. If the passed key was to an object occupied by a thread, the associated thread is destroyed as well. |
| 1 | Key was not within the range. |
| RC_RequestError | The passed key was read not a strong page or node key |
Get Object (OC = 4)Wait for Object (OC = 5)Returns a strong key to the Nth object in Fth frame in the range.
If the requested object type does not correspond to the type of the objects currently residing in the designated frame, all objects in that frame are rescinded before the new object is created. For example: if the objects presently in frame 2 are node objects and a page capability is fabricated within this frame, all of the nodes within the frame will be rescinded before the new key is returned.
If the object is not mounted and Wait for Object is used, wait until the required range has been mounted. If the object is not mounted, and Get Object is used, returns an error.
| Request | L | The value of (F * OBJECTS_PER_FRAME) + N, where F is a frame within this range, and N is the number of the object within the frame to which a key should be fabricated. |
| R1 | Indicates the type of the object to be created:| Value | Meaning | | 1 | Fabricate a page | | 2 | Fabricate a capability page | | 3 | Fabricate a node |
|
| Reply | RK0 | A strong key to the Nth object in the range. |
| Result | RC_OK | Success |
| 1 | Value passed did not correspond to a valid object, either because F was greater than the number of frames covered by this range key or N was too large for the object type requested. |
| 2 | The object is not mounted (Get Object only). |
| 3 | There was an unrecoverable I/O error fetching the Nth object. Object is effectively dead. |
| RC_RequestError | An inappropriate number of bytes were passed (must be either 4 or 8 bytes). |
Compare Ranges (OC = 6)Compares two ranges for overlap. If the two ranges overlap, returns the offset at which the overlap occurs. The offset reported, if any is computed as follows:
if (SK0.start > IK.start)offset = SK0.start - IK.start;
elseoffset = IK.start - SK0.start;
| Request | SK0 | A range key. |
| Reply | R1 | 0 if the ranges do not overlap. 1 if SK0 overlaps the invoked key (IK) from above. That is, (SK0.start >= IK.start AND SK0.start < IK.end) 2 if the two ranges have the same starting value. 3 if SK0 overlaps the invoked key (IK) from above. That is, (SK0.start < IK.start AND SK0.end > IK.start) |
| R2 | The low-order portion of the offset at which the overlap occurs, or zero. |
| R3 | The high-order portion of the offset at which the overlap occurs, or zero. |
| Result | RC_OK | Operation completed successfully. |