-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
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.
- 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, in entries.
The object list is a special segment that contains object IDs
rather than arbitrary data. Each object ID will be translated
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 (SHA-1 of interface GUIDs) 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