diff options
author | Neal H. Walfield <neal@gnu.org> | 2007-12-12 23:32:52 +0000 |
---|---|---|
committer | Thomas Schwinge <tschwinge@gnu.org> | 2009-04-07 23:11:34 +0200 |
commit | b8a2f5eb1724f9025cb4e34b7dd42351bb4f2cef (patch) | |
tree | 77c269abc28d4409f679523afb6b5ea72214f01f | |
parent | d103b8568a4bcbf380d36b5fb86bef8ea475a682 (diff) |
hurd/
2007-12-13 Neal H. Walfield <neal@gnu.org>
* exceptions.h (exception_page_cleanup): New declaration.
libhurd-mm/
2007-12-13 Neal H. Walfield <neal@gnu.org>
* exceptions.c (exception_frame_alloc): When allocating the first
frame, set EXCEPTION_PAGE->EXCEPTION_STACK_BOTTOM.
(exception_page_cleanup): New function.
* ia32-exception-entry.S (_exception_handler_end): Correctly
adjust the exception page's exception stack.
libpthread/
2007-12-13 Neal H. Walfield <neal@gnu.org>
* sysdeps/l4/hurd/pt-thread-halt.c: Include <hurd/exceptions.h>.
(__pthread_thread_halt): Call exception_page_cleanup.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | sysdeps/l4/hurd/pt-thread-halt.c | 4 |
2 files changed, 9 insertions, 0 deletions
@@ -1,3 +1,8 @@ +2007-12-13 Neal H. Walfield <neal@gnu.org> + + * sysdeps/l4/hurd/pt-thread-halt.c: Include <hurd/exceptions.h>. + (__pthread_thread_halt): Call exception_page_cleanup. + 2007-12-12 Neal H. Walfield <neal@gnu.org> * sysdeps/l4/pt-block.c (__pthread_block): Clear the acceptor. diff --git a/sysdeps/l4/hurd/pt-thread-halt.c b/sysdeps/l4/hurd/pt-thread-halt.c index 4aa112b..1e9a8ee 100644 --- a/sysdeps/l4/hurd/pt-thread-halt.c +++ b/sysdeps/l4/hurd/pt-thread-halt.c @@ -22,6 +22,8 @@ #include <pt-internal.h> +#include <hurd/exceptions.h> + /* If we try to deallocate our self, we will end up causing a deadlock. Thus, when a thread tries to free itself, we add it here. The next thread to free a thread will free it. */ @@ -48,6 +50,8 @@ __pthread_thread_halt (struct __pthread *thread, int need_dealloc) /* Free the exception page. */ assert (! ADDR_IS_VOID (exception_page.addr)); + exception_page_cleanup (ADDR_TO_PTR (addr_extend (exception_page.addr, + 0, PAGESIZE_LOG2))); storage_free (exception_page.addr, false); if (tid == l4_myself ()) |