summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorneal <neal>2008-07-01 15:56:04 +0000
committerneal <neal>2008-07-01 15:56:04 +0000
commitef1429af19ac4497e65edef4057aec6b07ba063d (patch)
tree57dd0acc9233ca46d3c9c8b2a1054afafc89fdce
parent2fbd389c73286687e66737f094a004ee5fb7b65b (diff)
2008-07-01 Neal H. Walfield <neal@gnu.org>
* server.c (server_loop): In the cap_rubout implementation, shootdown TARGET.
-rw-r--r--viengoos/ChangeLog5
-rw-r--r--viengoos/server.c13
2 files changed, 13 insertions, 5 deletions
diff --git a/viengoos/ChangeLog b/viengoos/ChangeLog
index 1a04689..f356b44 100644
--- a/viengoos/ChangeLog
+++ b/viengoos/ChangeLog
@@ -1,5 +1,10 @@
2008-07-01 Neal H. Walfield <neal@gnu.org>
+ * server.c (server_loop): In the cap_rubout implementation,
+ shootdown TARGET.
+
+2008-07-01 Neal H. Walfield <neal@gnu.org>
+
* object.h (object_desc_to_cap): Correctly set the subpage
specification.
diff --git a/viengoos/server.c b/viengoos/server.c
index 91be791..2d0c8a3 100644
--- a/viengoos/server.c
+++ b/viengoos/server.c
@@ -146,7 +146,7 @@ server_loop (void)
}
#endif
- debug (0, "%s %x failed: %u",
+ debug (4, "%s %x failed: %u",
l4_error_code () & 1 ? "Receiving from" : "Sending to",
l4_error_code () & 1 ? from : to,
(l4_error_code () >> 1) & 0x7);
@@ -233,8 +233,8 @@ server_loop (void)
bool w = !! (access & L4_FPAGE_WRITABLE);
enum cap_type type = w ? cap_page : cap_rpage;
- DEBUG (5, "page fault at %x.%s (ip = %x)",
- fault, w ? "w" : "r", ip);
+ DEBUG (4, "%s fault at %x (ip = %x)",
+ w ? "Write" : "Read", fault, ip);
l4_word_t page_addr = fault & ~(PAGESIZE - 1);
bool writable;
@@ -356,6 +356,7 @@ server_loop (void)
{ \
if (err_) \
{ \
+ DEBUG (1, DEBUG_BOLD ("Returning error %d"), err_); \
l4_msg_clear (msg); \
l4_msg_put_word (msg, 0, (err_)); \
l4_msg_set_untyped_words (msg, 1); \
@@ -977,7 +978,9 @@ server_loop (void)
respect any subpag specification for cappages. */
struct cap *target = SLOT (root, target_addr);
- target->type = cap_void;
+ cap_shootdown (principal, target);
+
+ memset (target, 0, sizeof (*target));
rm_cap_rubout_reply_marshal (&msg);
break;
@@ -1378,7 +1381,7 @@ server_loop (void)
period = (ACTIVITY_STATS_PERIODS + 1) + period;
DEBUG (4, OBJECT_NAME_FMT ": %s%s%s(%d), "
- "period: %d (current: %d)\n",
+ "period: %d (current: %d)",
OBJECT_NAME_PRINTF ((struct object *) principal),
flags & activity_info_stats ? "stats" : "",
(flags == (activity_info_pressure|activity_info_stats))