summaryrefslogtreecommitdiff
path: root/viengoos/thread.h
diff options
context:
space:
mode:
authorneal <neal>2007-11-19 22:59:04 +0000
committerneal <neal>2007-11-19 22:59:04 +0000
commit755d9a8988a5ae6e70fe5dbf6a980bad0c54821d (patch)
treeec578a1f082f218884a48c0b6bb5a0a84da96f01 /viengoos/thread.h
parent5c2c982ba3cfbe34c79cb2096018567ca6cd8fb6 (diff)
hurd/
2007-11-19 Neal H. Walfield <neal@gnu.org> * Makefile.am (includehurd_HEADERS): Add exceptions.h. * headers.m4: Link $(BUILDIR)/include/hurd/exceptions.h to exceptions.h. * exceptions.h: New file. viengoos/ 2007-11-19 Neal H. Walfield <neal@gnu.org> * thread.h (struct thread): Add fields have_exception and exception. (UTCB_AREA_SIZE): Provide space for two UTCBs. * thread.c: Include <hurd/exceptions.h>. (thread_create_in): For each thread that we allocate, allocate two consecutive l4 thread ids. (thread_commission): Initialize the main thread and the exception thread. (thread_decommission): Destroy both the main thread and the exception thread. * rm.h: Add RM_exception_collect. (rm_method_id_string): Handle RM_exception_collect. (exception_collect): New RPC method. * server.c: Include <hurd/exceptions.h>. (server_loop): If FROM is the exception thread, look up the thread object using the main thread id. Propagate any fault to the exception thread. If not immediately successful, save the message in THREAD->EXCEPTION and set THREAD->HAVE_EXCEPTION. Implement the exception_collect method. (DEBUG): Also print the method number. libhurd-mm/ 2007-11-19 Neal H. Walfield <neal@gnu.org> * Makefile.am (libhurd_mm_a_SOURCES): Add exceptions.h, exceptions.c, pager.h, pager.c, anonymous.h and anonymous.c. * headers.m4: Link $(BUILDDIR)/include/hurd/pager.h to pager.h. Link $(BUILDDIR)/include/hurd/anonymous.h to anonymous.h. * mm-init.c: Include "exceptions.h". (mm_init): Call exception_handler_init. * pager.h: Completely rewrite. * pager.c: Likewise. * anonymous.h: Likewise. * anonymous.c: Likewise. * exceptions.h: New file. * exceptions.c: Likewise. * mmap.c: Include <hurd/anonymous.h>. (mmap): Rewrite to use an anonymous pager.
Diffstat (limited to 'viengoos/thread.h')
-rw-r--r--viengoos/thread.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/viengoos/thread.h b/viengoos/thread.h
index a8849fa..fe31403 100644
--- a/viengoos/thread.h
+++ b/viengoos/thread.h
@@ -56,12 +56,15 @@ struct thread
/* Debugging: whether the thread has been commissioned. */
int commissioned;
+ bool have_exception;
+ /* 64 words (256/512 bytes). */
+ l4_msg_t exception;
};
/* The hardwired base of the UTCB (2.5GB). */
#define UTCB_AREA_BASE (0xA0000000)
/* The size of the UTCB. */
-#define UTCB_AREA_SIZE (l4_utcb_area_size ())
+#define UTCB_AREA_SIZE (2 * l4_utcb_area_size ())
/* The hardwired base of the KIP. */
#define KIP_BASE (UTCB_AREA_BASE + UTCB_AREA_SIZE)