diff options
author | neal <neal> | 2007-11-19 22:59:04 +0000 |
---|---|---|
committer | neal <neal> | 2007-11-19 22:59:04 +0000 |
commit | 755d9a8988a5ae6e70fe5dbf6a980bad0c54821d (patch) | |
tree | ec578a1f082f218884a48c0b6bb5a0a84da96f01 /viengoos/thread.h | |
parent | 5c2c982ba3cfbe34c79cb2096018567ca6cd8fb6 (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.h | 5 |
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) |