]> git.buserror.net Git - polintos/scott/priv.git/blobdiff - doc/orb/parameter-info-block
xfer to laptop
[polintos/scott/priv.git] / doc / orb / parameter-info-block
index 8f32e1cb40409afdc4004df163a5850bd98e976e..b868a4474a0a7dcc6070fb7d6f9751716d6d3d38 100644 (file)
@@ -1,29 +1,32 @@
-Parameter Info Block (PIB), all offsets in pointer-length words
-   Name            Offset  Meaning
-   buffer_size     0       Size of the destination buffer, excluding
+Parameter Info Block (PIB)
+   Name            Size    Meaning
+   buffer_size     32-bit  Size of the destination buffer, excluding
                            Copy segments.
    
       The total number of bytes in all of the segments that require a
-      buffer to be created in the destination address space.  This is
+      buffer to be created in the destination address space, with each
+      buffer individually rounded up to an 8-byte alignment.  This is
       specified so that the kernel can allocate one large buffer for all
-      segments before traversing the segment list.  When returning from a
-      method, the buffer size only includes buffers allocated by the
-      caller; "inout" segments where the caller specified a non-NULL ptr,
-      and the callee did not increase the length, are not included
+      segments before traversing the segment list.  When returning from
+      method, the buffer size only includes buffers allocated by the
+      caller; "inout" segments where the caller specified a non-NULL
+      ptr, and the callee did not increase the length, are not included
       (because the kernel does not need to allocate a caller-side buffer
-      for them).  The kernel may throw an exception if the actual
-      size is greater than specified in this field.
+      for them).  The kernel may throw an exception if the actual size
+      is greater than specified in this field.
       
       This only covers the "normal" segments which are mapped only
       for the duration of the call.  Copy segments are handled
       separately.
    
-   copy_size       1       Size of all Copy segments.
+   copy_size       32-bit  Size of all Copy segments.
    
-      This is like buffer_size, but for Copy segments.  The pages
+      This is like buffer_size, but for Copy segments.
 
-   objlist_ptr     2       Pointer to the object list
-   objlist_len     3       Length of the object list, in IDs
+   objlist_ptr     pointer Pointer to the object list
+       newobj_ptr      pointer Pointer to the new object list.
+   objlist_len     32-bit  Length of the object list, in IDs
+       newobj_len      32-bit  Length of the new object list.
 
       The object list is a special segment that contains object IDs
       rather than arbitrary data.  Each object ID will be translated
@@ -32,12 +35,21 @@ Parameter Info Block (PIB), all offsets in pointer-length words
       regardless of the pointer size.  The first object in the list
       is the object to receive the message.
 
-   num_segments    4       Number of data segments
-   segment.ptr     5+n*4   Pointer to data segment
-   segment.len     6+n*4   Length of data segment in bytes
-   segment.flags   7+n*4   Attributes of data segment
-   reserved        8+n*4   Reserved for future use, and for
-                           power-of-two indexing
+               Objects which live in this address space have the high bit
+               clear; remote objects have the high bit set.  When sending
+               an object reference that has not been exposed to the kernel
+               before, its interface hash should exist in the newobj list.
+
+               
+
+   num_segments    32-bit  Number of data segments
+
+   segment.ptr     pointer Pointer to data segment
+   segment.len     32-bit  Length of data segment in bytes
+   segment.flags   32-bit  Attributes of data segment
+   reserved                Reserved for future use, and for
+                           power-of-two indexing -- pad to
+                           32 bytes.
    
       Each segment describes data being transmitted to and/or from the
       callee.  For out segments, the caller may designate a buffer to hold