summaryrefslogtreecommitdiff
path: root/libviengoos
diff options
context:
space:
mode:
authorNeal H. Walfield <neal@gnu.org>2008-12-18 22:54:15 +0100
committerNeal H. Walfield <neal@gnu.org>2008-12-18 22:54:15 +0100
commit207770cea7fece43bf5517fec7abd88a3a7d6146 (patch)
tree6f41abd1dc4782f34b339b00da956d0c778ef1b7 /libviengoos
parentf5cfa7cbb8a2fff68cf87a3a685428507ce977b4 (diff)
Support batching requests for object_discarded_clear.
libviengoos/ 2008-12-18 Neal H. Walfield <neal@gnu.org> * viengoos/cap.h (object_discarded_clear): Take additional parameter count. Take multiple object addresses. viengoos/ 2008-12-18 Neal H. Walfield <neal@gnu.org> * server.c (server_loop): Handle multiple objects in object_discarded_clear. libhurd-mm/ 2008-12-18 Neal H. Walfield <neal@gnu.org> * anonymous.c (fault): Batch object discard requests.
Diffstat (limited to 'libviengoos')
-rw-r--r--libviengoos/ChangeLog5
-rw-r--r--libviengoos/viengoos/cap.h17
2 files changed, 16 insertions, 6 deletions
diff --git a/libviengoos/ChangeLog b/libviengoos/ChangeLog
index 3006d73..180a7a4 100644
--- a/libviengoos/ChangeLog
+++ b/libviengoos/ChangeLog
@@ -1,5 +1,10 @@
2008-12-18 Neal H. Walfield <neal@gnu.org>
+ * viengoos/cap.h (object_discarded_clear): Take additional
+ parameter count. Take multiple object addresses.
+
+2008-12-18 Neal H. Walfield <neal@gnu.org>
+
* viengoos/misc.h (vg_method_id_string): Handle VG_messenger_id.
2008-12-18 Neal H. Walfield <neal@gnu.org>
diff --git a/libviengoos/viengoos/cap.h b/libviengoos/viengoos/cap.h
index b456d34..50562d9 100644
--- a/libviengoos/viengoos/cap.h
+++ b/libviengoos/viengoos/cap.h
@@ -417,7 +417,7 @@ enum
VG_CAP_COPY_PRIORITY_SET = 1 << 5,
};
-/* Copy the capability in capability slot SOURCE to the slot at VG_ADDR
+/* Copy the capability in capability slot SOURCE to the slot at ADDR
in the object OBJECT. If OBJECT is VG_ADDR_VOID, then the calling
thread's address space root is used.
@@ -445,21 +445,26 @@ RPC(cap_copy, 5, 0, 0,
cap_t, source_object, vg_addr_t, source_addr,
uintptr_t, flags, struct vg_cap_properties, properties)
-/* Overwrite the capability slot at VG_ADDR in the object OBJECT with a
+/* Overwrite the capability slot at ADDR in the object OBJECT with a
void capability. */
RPC(cap_rubout, 1, 0, 0,
/* cap_t activity, cap_t object, */ vg_addr_t, addr)
-/* Returns the public bits of the capability at address VG_ADDR in OBJECT
+/* Returns the public bits of the capability at address ADDR in OBJECT
in TYPE and VG_CAP_PROPERTIES. */
RPC(cap_read, 1, 2, 0,
/* cap_t activity, cap_t object, */ vg_addr_t, addr,
/* Out: */
uintptr_t, type, struct vg_cap_properties, properties)
-/* Clear the discarded bit of the object at VG_ADDR in object OBJECT. */
-RPC(object_discarded_clear, 1, 0, 0,
- /* cap_t activity, cap_t object, */ vg_addr_t, addr)
+/* Clear the discarded bit of the objects at ADDR in object OBJECT.
+ Note: this function takes multiple addresses. Add further
+ addresses manually using vg_message_add. COUNT indicates the
+ number of objects successfully discarded. Stops after the first
+ error. */
+RPC(object_discarded_clear, 1, 1, 0,
+ /* cap_t activity, cap_t object, */ vg_addr_t, addr,
+ int, count)
/* If the object designated by OBJECT is in memory, discard it.
OBJECT must have write authority. This does not set the object's