diff options
author | neal <neal> | 2008-07-01 15:56:04 +0000 |
---|---|---|
committer | neal <neal> | 2008-07-01 15:56:04 +0000 |
commit | ef1429af19ac4497e65edef4057aec6b07ba063d (patch) | |
tree | 57dd0acc9233ca46d3c9c8b2a1054afafc89fdce | |
parent | 2fbd389c73286687e66737f094a004ee5fb7b65b (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/ChangeLog | 5 | ||||
-rw-r--r-- | viengoos/server.c | 13 |
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)) |