summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libviengoos/ChangeLog6
-rw-r--r--libviengoos/viengoos/rpc.h13
-rw-r--r--viengoos/ChangeLog5
-rw-r--r--viengoos/server.c3
4 files changed, 19 insertions, 8 deletions
diff --git a/libviengoos/ChangeLog b/libviengoos/ChangeLog
index c7670b7..b21f285 100644
--- a/libviengoos/ChangeLog
+++ b/libviengoos/ChangeLog
@@ -1,5 +1,11 @@
2008-12-18 Neal H. Walfield <neal@gnu.org>
+ * viengoos/rpc.h (RPC_SEND_MARSHAL): Make the reply messenger the
+ first capability.
+ (RPC_SEND_UNMARSHAL): Likewise.
+
+2008-12-18 Neal H. Walfield <neal@gnu.org>
+
* RPC: Move here from ../hurd.
2008-12-18 Neal H. Walfield <neal@gnu.org>
diff --git a/libviengoos/viengoos/rpc.h b/libviengoos/viengoos/rpc.h
index 7ede9ce..7817f54 100644
--- a/libviengoos/viengoos/rpc.h
+++ b/libviengoos/viengoos/rpc.h
@@ -385,10 +385,10 @@ typedef vg_addr_t cap_t;
vg_message_clear (msg); \
/* Add the label. */ \
vg_message_append_word (msg, RPC_ID_PREFIX_(id)); \
- /* Then load the arguments. */ \
- RPCLOAD (icount, ##__VA_ARGS__); \
- /* Finally, add the reply messenger. */ \
+ /* The reply messenger. */ \
vg_message_append_cap (msg, reply_messenger); \
+ /* And finally, load the arguments. */ \
+ RPCLOAD (icount, ##__VA_ARGS__); \
}
/* Unmarshal a request. */
@@ -410,8 +410,11 @@ typedef vg_addr_t cap_t;
return EINVAL; \
} \
\
+ if (reply_messenger) \
+ *reply_messenger = vg_message_cap (msg, 0); \
+ \
int __rsu_data_idx __attribute__ ((unused)) = 1; \
- int __rsu_cap_idx __attribute__ ((unused)) = 0; \
+ int __rsu_cap_idx __attribute__ ((unused)) = 1; \
error_t __rsu_err = 0; \
RPCSTORE (icount, ##__VA_ARGS__); \
if (unlikely (__rsu_err \
@@ -427,8 +430,6 @@ typedef vg_addr_t cap_t;
return EINVAL; \
} \
\
- if (reply_messenger) \
- *reply_messenger = vg_message_cap (msg, __rsu_cap_idx); \
return 0; \
}
diff --git a/viengoos/ChangeLog b/viengoos/ChangeLog
index 45e3415..6dace36 100644
--- a/viengoos/ChangeLog
+++ b/viengoos/ChangeLog
@@ -1,3 +1,8 @@
+2008-12-18 Neal H. Walfield <neal@gnu.org>
+
+ * server.c (server_loop): Use the first capability as the reply
+ messenger.
+
2008-12-17 Neal H. Walfield <neal@gnu.org>
* ager.c (update_stats): Use vg_activity_info_reply, not
diff --git a/viengoos/server.c b/viengoos/server.c
index 26b73d0..3314e60 100644
--- a/viengoos/server.c
+++ b/viengoos/server.c
@@ -974,8 +974,7 @@ server_loop (void)
object will just result in a discarded EINVAL. */
reply = (struct messenger *)
OBJECT (&thread->aspace,
- vg_message_cap (message,
- vg_message_cap_count (message) - 1),
+ vg_message_cap (message, 0),
vg_cap_rmessenger, false, NULL);
/* There are a number of methods that look up an object relative