summaryrefslogtreecommitdiff
path: root/libpthread
diff options
context:
space:
mode:
authorneal <neal>2007-12-12 23:32:52 +0000
committerneal <neal>2007-12-12 23:32:52 +0000
commit2bc0ce8855c99d9c05a75b53498abc02e8188d6b (patch)
tree0af5cb9cb160f8e9fddf45e46584c36a868fe6e4 /libpthread
parentc6db87c3de0012174f1ec96eb4922ab2678b701d (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.
Diffstat (limited to 'libpthread')
-rw-r--r--libpthread/ChangeLog5
-rw-r--r--libpthread/sysdeps/l4/hurd/pt-thread-halt.c4
2 files changed, 9 insertions, 0 deletions
diff --git a/libpthread/ChangeLog b/libpthread/ChangeLog
index cc74c3e..8f5a0ed 100644
--- a/libpthread/ChangeLog
+++ b/libpthread/ChangeLog
@@ -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/libpthread/sysdeps/l4/hurd/pt-thread-halt.c b/libpthread/sysdeps/l4/hurd/pt-thread-halt.c
index 4aa112b..1e9a8ee 100644
--- a/libpthread/sysdeps/l4/hurd/pt-thread-halt.c
+++ b/libpthread/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 ())