diff options
author | Neal H. Walfield <neal@gnu.org> | 2008-12-17 13:11:52 +0100 |
---|---|---|
committer | Neal H. Walfield <neal@gnu.org> | 2008-12-17 13:11:52 +0100 |
commit | ca828476fdb64ad4615bc6f580c2a451e78fcc1c (patch) | |
tree | 320c2e89e34bbcd0ba82b64728f831b8536cc286 /libhurd-mm/exceptions.c | |
parent | f0d7e0e0ee0cb0362ee79739922a76faef17917c (diff) |
Move viengoos header files to libviengoos.
/
2008-12-17 Neal H. Walfield <neal@gnu.org>
* libviengoos: New directory.
* Makefile.am (SUBDIRS): Add libviengoos.
* configure.ac: Include libviengoos/headers.m4. Generate
libviengoos/Makefile.
hurd/
2008-12-17 Neal H. Walfield <neal@gnu.org>
* activity.h: Move to ../libviengoos/viengoos. Update references.
* addr-trans.h: Likewise.
* addr.h: Likewise.
* cap.h: Likewise.
* folio.h: Likewise.
* futex.h: Likewise.
* ipc.h: Likewise.
* message.h: Likewise.
* messenger.h: Likewise.
* rpc.h: Likewise.
* thread.h: Move viengoos specific bits...
* ../libviengoos/viengoos/thread.h: ... to this new file.
* thread.h (struct hurd_utcb): New structure.
* exceptions.h (hurd_utcb): Use a struct hurd_utcb *, not a
struct vg_utcb *. Update users.
(hurd_activation_state_alloc): Likewise.
(hurd_activation_state_free): Likewise.
(hurd_activation_handler_activated): Likewise.
(hurd_activation_handler_normal): Likewise.
* t-addr-trans.c: Move to ../libviengoos.
* t-addr.c: Likewise.
* t-rpc.c: Likewise.
* Makefile.am (TESTS, check_PROGRAMS, t_addr_CPPFLAGS)
(t_addr_SOURCES, t_addr_trans_CPPFLAGS, t_addr_trans_SOURCES)
(t_rpc_CPPFLAGS, t_rpc_SOURCES): Move from this file...
* ../libviengoos/Makefile.am.
* Makefile.am (includehurd_HEADERS): Don't mention activity.h,
addr-trans.h, addr.h, cap.h, folio.h, futex.h, ipc.h, message.h or
messenger.h.
* headers.m4: Don't create a link to hurd/addr.h,
hurd/addr-trans.h, hurd/cap.h, hurd/folio.h, hurd/rpc.h,
hurd/activity.h, hurd/futex.h, hurd/message.h, hurd/messenger.h or
hurd/ipc.h.
libviengoos/
2008-12-17 Neal H. Walfield <neal@gnu.org>
* Makefile.am: New file.
* headers.m4: Likewise.
* t-addr-trans.c: Move from ../hurd.
* t-addr.c: Likewise.
* t-rpc.c: Likewise.
* viengoos.h: Likewise.
* viengoos/activity.h: Likewise.
* viengoos/addr-trans.h: Likewise.
* viengoos/addr.h: Likewise.
* viengoos/cap.h: Likewise.
* viengoos/folio.h: Likewise.
* viengoos/futex.h: Likewise.
* viengoos/ipc.h: Likewise.
* viengoos/message.h: Likewise.
* viengoos/messenger.h: Likewise.
* viengoos/rpc.h: Likewise.
* viengoos/misc.h: Moved from ../viengoos/rm.h.
* viengoos/thread.h: New file split from ../hurd/thread.h.
libpthread/
2008-12-17 Neal H. Walfield <neal@gnu.org>
* Makefile.am: New file.
* headers.m4: Likewise.
* t-addr-trans.c: Move from ../hurd.
* t-addr.c: Likewise.
* t-rpc.c: Likewise.
* viengoos.h: Likewise.
* viengoos/activity.h: Likewise.
* viengoos/addr-trans.h: Likewise.
* viengoos/addr.h: Likewise.
* viengoos/cap.h: Likewise.
* viengoos/folio.h: Likewise.
* viengoos/futex.h: Likewise.
* viengoos/ipc.h: Likewise.
* viengoos/message.h: Likewise.
* viengoos/messenger.h: Likewise.
* viengoos/rpc.h: Likewise.
* viengoos/misc.h: Moved from ../viengoos/rm.h.
* viengoos/thread.h: New file split from ../hurd/thread.h.
viengoos/
2008-12-17 Neal H. Walfield <neal@gnu.org>
* rm.h: Move from here...
* ../libviengoos/viengoos/misc.h: ... to here. Update users.
* headers.m4: Don't link rm.h to hurd/rm.h.
* Makefile.am (viengoos_SOURCES): Remove rm.h.
Diffstat (limited to 'libhurd-mm/exceptions.c')
-rw-r--r-- | libhurd-mm/exceptions.c | 93 |
1 files changed, 47 insertions, 46 deletions
diff --git a/libhurd-mm/exceptions.c b/libhurd-mm/exceptions.c index 26ad7c7..73d9a9f 100644 --- a/libhurd-mm/exceptions.c +++ b/libhurd-mm/exceptions.c @@ -24,7 +24,7 @@ #include <hurd/storage.h> #include <hurd/thread.h> #include <hurd/mm.h> -#include <hurd/rm.h> +#include <viengoos/misc.h> #include <hurd/slab.h> #include <l4/thread.h> @@ -38,7 +38,7 @@ void hurd_fault_catcher_register (struct hurd_fault_catcher *catcher) { - struct vg_utcb *utcb = hurd_utcb (); + struct hurd_utcb *utcb = hurd_utcb (); assert (utcb); assert (catcher); @@ -153,7 +153,7 @@ hurd_activation_message_register (struct hurd_message_buffer *message_buffer) if (unlikely (! mm_init_done)) return; - struct vg_utcb *utcb = hurd_utcb (); + struct hurd_utcb *utcb = hurd_utcb (); assert (utcb); assert (message_buffer); @@ -173,7 +173,7 @@ hurd_activation_message_unregister (struct hurd_message_buffer *message_buffer) if (unlikely (! mm_init_done)) return; - struct vg_utcb *utcb = hurd_utcb (); + struct hurd_utcb *utcb = hurd_utcb (); assert (utcb); assert (message_buffer); assert (utcb->extant_message == message_buffer); @@ -218,7 +218,7 @@ activation_frame_slab_dealloc (void *hook, void *buffer, size_t size) } static void -check_activation_frame_reserve (struct vg_utcb *utcb) +check_activation_frame_reserve (struct hurd_utcb *utcb) { if (unlikely (! utcb->activation_stack || ! utcb->activation_stack->prev)) @@ -244,7 +244,7 @@ check_activation_frame_reserve (struct vg_utcb *utcb) } static struct activation_frame * -activation_frame_alloc (struct vg_utcb *utcb) +activation_frame_alloc (struct hurd_utcb *utcb) { struct activation_frame *activation_frame; @@ -272,7 +272,7 @@ activation_frame_alloc (struct vg_utcb *utcb) void hurd_activation_stack_dump (void) { - struct vg_utcb *utcb = hurd_utcb (); + struct hurd_utcb *utcb = hurd_utcb (); int depth = 0; struct activation_frame *activation_frame; @@ -300,7 +300,7 @@ hurd_activation_stack_dump (void) void hurd_activation_handler_normal (struct activation_frame *activation_frame, - struct vg_utcb *utcb) + struct hurd_utcb *utcb) { assert (utcb == hurd_utcb ()); assert (activation_frame->canary == ACTIVATION_FRAME_CANARY); @@ -451,7 +451,7 @@ hurd_activation_handler_normal (struct activation_frame *activation_frame, #ifndef NDEBUG static uintptr_t -crc (struct vg_utcb *utcb) +crc (struct hurd_utcb *utcb) { uintptr_t crc = 0; uintptr_t *p; @@ -463,15 +463,15 @@ crc (struct vg_utcb *utcb) #endif struct activation_frame * -hurd_activation_handler_activated (struct vg_utcb *utcb) +hurd_activation_handler_activated (struct hurd_utcb *utcb) { assert (((uintptr_t) utcb & (PAGESIZE - 1)) == 0); assert (utcb->canary0 == UTCB_CANARY0); assert (utcb->canary1 == UTCB_CANARY1); - assert (utcb->activated_mode); + assert (utcb->vg.activated_mode); /* XXX: Assumption that stack grows down... */ - assert (utcb->activation_handler_sp - PAGESIZE <= (uintptr_t) &utcb); - assert ((uintptr_t) &utcb <= utcb->activation_handler_sp); + assert (utcb->vg.activation_handler_sp - PAGESIZE <= (uintptr_t) &utcb); + assert ((uintptr_t) &utcb <= utcb->vg.activation_handler_sp); if (unlikely (! mm_init_done)) /* Just returns: during initialization, we don't except any faults or @@ -485,14 +485,14 @@ hurd_activation_handler_activated (struct vg_utcb *utcb) assertx (utcb == hurd_utcb (), "%p != %p (func: %p; ip: %p, sp: %p)", utcb, hurd_utcb (), hurd_utcb, - (void *) utcb->saved_ip, (void *) utcb->saved_sp); + (void *) utcb->vg.saved_ip, (void *) utcb->vg.saved_sp); debug (5, "Activation handler called (utcb: %p)", utcb); struct hurd_message_buffer *mb - = (struct hurd_message_buffer *) (uintptr_t) utcb->messenger_id; + = (struct hurd_message_buffer *) (uintptr_t) utcb->vg.messenger_id; - debug (5, "Got message %llx (utcb: %p)", utcb->messenger_id, utcb); + debug (5, "Got message %llx (utcb: %p)", utcb->vg.messenger_id, utcb); assert (mb->magic == HURD_MESSAGE_BUFFER_MAGIC); @@ -608,7 +608,7 @@ hurd_activation_handler_activated (struct vg_utcb *utcb) else { panic ("Unknown messenger %llx (extant: %p; exception: %p) (label: %d)", - utcb->messenger_id, + utcb->vg.messenger_id, utcb->extant_message, utcb->exception_buffer, vg_message_word (mb->reply, 0)); } @@ -643,9 +643,9 @@ static char activation_handler_area0[PAGESIZE] __attribute__ ((aligned (PAGESIZE))); static char activation_handler_msg[PAGESIZE] __attribute__ ((aligned (PAGESIZE))); -static struct vg_utcb *initial_utcb = (void *) &activation_handler_area0[0]; +static struct hurd_utcb *initial_utcb = (void *) &activation_handler_area0[0]; -static struct vg_utcb * +static struct hurd_utcb * simple_utcb_fetcher (void) { assert (initial_utcb->canary0 == UTCB_CANARY0); @@ -654,7 +654,7 @@ simple_utcb_fetcher (void) return initial_utcb; } -struct vg_utcb *(*hurd_utcb) (void); +struct hurd_utcb *(*hurd_utcb) (void); void hurd_activation_handler_init_early (void) @@ -664,21 +664,21 @@ hurd_activation_handler_init_early (void) hurd_utcb = simple_utcb_fetcher; - struct vg_utcb *utcb = hurd_utcb (); + struct hurd_utcb *utcb = hurd_utcb (); assert (utcb == initial_utcb); /* XXX: We assume the stack grows down! SP is set to the end of the exception page. */ - utcb->activation_handler_sp + utcb->vg.activation_handler_sp = (uintptr_t) activation_handler_area0 + sizeof (activation_handler_area0); /* The word beyond the base of the stack is interpreted as a pointer to the exception page. Make it so. */ - utcb->activation_handler_sp -= sizeof (void *); - * (void **) utcb->activation_handler_sp = utcb; + utcb->vg.activation_handler_sp -= sizeof (void *); + * (void **) utcb->vg.activation_handler_sp = utcb; - utcb->activation_handler_ip = (uintptr_t) &hurd_activation_handler_entry; - utcb->activation_handler_end = (uintptr_t) &hurd_activation_handler_end; + utcb->vg.activation_handler_ip = (uintptr_t) &hurd_activation_handler_entry; + utcb->vg.activation_handler_end = (uintptr_t) &hurd_activation_handler_end; struct hurd_thread_exregs_in in; memset (&in, 0, sizeof (in)); @@ -703,14 +703,14 @@ hurd_activation_handler_init_early (void) 0, 0, ADDR_VOID); if (err) panic ("Failed to send IPC: %d", err); - if (utcb->inline_words[0]) - panic ("Failed to install utcb page: %d", utcb->inline_words[0]); + if (utcb->vg.inline_words[0]) + panic ("Failed to install utcb page: %d", utcb->vg.inline_words[0]); } void hurd_activation_handler_init (void) { - struct vg_utcb *utcb; + struct hurd_utcb *utcb; error_t err = hurd_activation_state_alloc (__hurd_startup_data->thread, &utcb); if (err) @@ -730,7 +730,7 @@ hurd_activation_handler_init (void) #define ACTIVATION_AREA_SIZE (1 << ACTIVATION_AREA_SIZE_LOG2) error_t -hurd_activation_state_alloc (addr_t thread, struct vg_utcb **utcbp) +hurd_activation_state_alloc (addr_t thread, struct hurd_utcb **utcbp) { debug (5, DEBUG_BOLD ("allocating activation state for " ADDR_FMT), ADDR_PRINTF (thread)); @@ -780,7 +780,7 @@ hurd_activation_state_alloc (addr_t thread, struct vg_utcb **utcbp) int page = SKIP; /* Allocate the utcb. */ - struct vg_utcb *utcb = activation_area_base + page * PAGESIZE; + struct hurd_utcb *utcb = activation_area_base + page * PAGESIZE; alloc (utcb); page += 1 + SKIP; @@ -790,30 +790,31 @@ hurd_activation_state_alloc (addr_t thread, struct vg_utcb **utcbp) XXX: We assume the stack grows down! */ #ifndef NDEBUG /* Use a dedicated page. */ - utcb->activation_handler_sp + utcb->vg.activation_handler_sp = (uintptr_t) activation_area_base + page * PAGESIZE; - alloc ((void *) utcb->activation_handler_sp); + alloc ((void *) utcb->vg.activation_handler_sp); - utcb->activation_handler_sp += PAGESIZE; + utcb->vg.activation_handler_sp += PAGESIZE; page += 1 + SKIP; #else /* Use the end of the UTCB. */ - utcb->activation_handler_sp = utcb + PAGESIZE; + utcb->vg.activation_handler_sp = utcb + PAGESIZE; #endif /* At the top of the stack page, we use some space to remember the storage we allocate so that we can free it later. */ - utcb->activation_handler_sp + utcb->vg.activation_handler_sp -= sizeof (addr_t) * ACTIVATION_AREA_SIZE / PAGESIZE; - memset (utcb->activation_handler_sp, 0, + memset ((void *) utcb->vg.activation_handler_sp, 0, sizeof (addr_t) * ACTIVATION_AREA_SIZE / PAGESIZE); - memcpy (utcb->activation_handler_sp, pages, sizeof (addr_t) * page_count); - pages = (addr_t *) utcb->activation_handler_sp; + memcpy ((void *) utcb->vg.activation_handler_sp, pages, + sizeof (addr_t) * page_count); + pages = (addr_t *) utcb->vg.activation_handler_sp; /* The word beyond the base of the stack is a pointer to the exception page. */ - utcb->activation_handler_sp -= sizeof (void *); - * (void **) utcb->activation_handler_sp = utcb; + utcb->vg.activation_handler_sp -= sizeof (void *); + * (void **) utcb->vg.activation_handler_sp = utcb; /* And a medium-sized alternate stack. */ @@ -829,8 +830,8 @@ hurd_activation_state_alloc (addr_t thread, struct vg_utcb **utcbp) utcb->alternate_stack = a; - utcb->activation_handler_ip = (uintptr_t) &hurd_activation_handler_entry; - utcb->activation_handler_end = (uintptr_t) &hurd_activation_handler_end; + utcb->vg.activation_handler_ip = (uintptr_t) &hurd_activation_handler_entry; + utcb->vg.activation_handler_end = (uintptr_t) &hurd_activation_handler_end; utcb->exception_buffer = hurd_message_buffer_alloc_long (); utcb->extant_message = NULL; @@ -841,7 +842,7 @@ hurd_activation_state_alloc (addr_t thread, struct vg_utcb **utcbp) debug (5, "Activation area: %p-%p; utcb: %p; stack: %p; alt stack: %p", (void *) activation_area_base, (void *) activation_area_base + ACTIVATION_AREA_SIZE - 1, - utcb, (void *) utcb->activation_handler_sp, utcb->alternate_stack); + utcb, (void *) utcb->vg.activation_handler_sp, utcb->alternate_stack); /* Unblock the exception handler messenger. */ @@ -880,7 +881,7 @@ hurd_activation_state_alloc (addr_t thread, struct vg_utcb **utcbp) } void -hurd_activation_state_free (struct vg_utcb *utcb) +hurd_activation_state_free (struct hurd_utcb *utcb) { assert (utcb->canary0 == UTCB_CANARY0); assert (utcb->canary1 == UTCB_CANARY1); @@ -902,7 +903,7 @@ hurd_activation_state_free (struct vg_utcb *utcb) in. */ addr_t pages[ACTIVATION_AREA_SIZE / PAGESIZE]; memcpy (pages, - utcb->activation_handler_sp + sizeof (uintptr_t), + (void *) utcb->vg.activation_handler_sp + sizeof (uintptr_t), sizeof (addr_t) * ACTIVATION_AREA_SIZE / PAGESIZE); int i; |