summaryrefslogtreecommitdiff
path: root/viengoos/ChangeLog
diff options
context:
space:
mode:
Diffstat (limited to 'viengoos/ChangeLog')
-rw-r--r--viengoos/ChangeLog112
1 files changed, 112 insertions, 0 deletions
diff --git a/viengoos/ChangeLog b/viengoos/ChangeLog
index 0c9817b..783bbfe 100644
--- a/viengoos/ChangeLog
+++ b/viengoos/ChangeLog
@@ -1,3 +1,115 @@
+2008-12-12 Neal H. Walfield <neal@gnu.org>
+
+ Implement messengers and convert to new IPC semantics.
+ * messenger.h: New file.
+ * messenger.c: New file.
+ * Makefile.am (viengoos_SOURCES): Add messenger.h and messenger.c.
+ * ager.c: Include "messenger.h".
+ (update_stats): Update notifivation code to use messengers.
+ * cap.c: Include <hurd/messenger.h>.
+ (cap_shootdown): Follow thread and messenger objects.
+ * object.h (object_wait_queue_head): Use and return struct
+ messenger *'s, not struct thread *'s. Update users.
+ (object_wait_queue_tail): Likewise.
+ (object_wait_queue_next): Likewise.
+ (object_wait_queue_prev): Likewise.
+ (object_wait_queue_enqueue): Likewise.
+ (object_wait_queue_dequeue): Likewise. Rename from this...
+ (object_wait_queue_unlink): ... to this.
+ (object_wait_queue_push): New declaration.
+ (folio_object_wait_queue_for_each): Use and return struct
+ messenger *'s, not struct thread *'s. Update users.
+ (object_wait_queue_for_each): Likewise.
+ * object.c: Include <hurd/messenger.h> and "messenger.h".
+ (folio_object_alloc): When destroying a messenger, call
+ messenger_destroy.
+ (folio_object_alloc): Send notifications using messengers.
+ (object_wait_queue_head): Use and return struct messenger *'s, not
+ struct thread *'s.
+ (object_wait_queue_tail): Likewise.
+ (object_wait_queue_next): Likewise.
+ (object_wait_queue_prev): Likewise.
+ (object_wait_queue_check): Likewise.
+ (object_wait_queue_enqueue): Likewise. Add MESSENGER to end of
+ the queue, not the beginning.
+ (object_wait_queue_push): New function.
+ (object_wait_queue_dequeue): Use and return struct messenger *'s,
+ not struct thread *'s. Rename from this...
+ (object_wait_queue_unlink): ... to this.
+ * pager.c: Include "messenger.h".
+ * thread.h: Don't include "list.h". Include <hurd/cap.h> and
+ <hurd/thread.h>.
+ (struct folio): Remove declaration.
+ (THREAD_SLOTS): Don't define.
+ (THREAD_WAIT_FUTEX): Move from here...
+ * messenger.h (MESSENGER_WAIT_FUTEX): ... to here.
+ * thread.h (THREAD_WAIT_DESTROY): Move from here...
+ * messenger.h (MESSENGER_WAIT_DESTROY): ... to here.
+ * thread.h (THREAD_WAIT_ACTIVITY_INFO): Move from here...
+ * messenger.h (MESSENGER_WAIT_ACTIVITY_INFO): ... to here.
+ * thread.h (struct thread): Rename field exception_page to utcb.
+ Add field exception_messenger. Remove fields wait_queue_p,
+ wait_queue_head, wait_queue_tail, wait_reason, wait_reason_arg,
+ wait_reason_arg2, wait_queue and futex_waiter_node.
+ (futex_waiters): Don't declare.
+ (thread_exregs): Change input capabilities to not be pointers to
+ capabilities but just capability structures. Add argument
+ exception_messenger. Remove arguments aspace_out, activity_out
+ and exception_page_out. Update users.
+ (thread_activate): New declaration.
+ (thread_raise_exception): Change MSG's type to be struct
+ vg_message *. Update users.
+ (thread_deliver_pending): New declaration.
+ * thread.c (thread_deinit): Remove code to remove THREAD from a
+ wait queue.
+ (thread_exregs): Change input capabilities to not be pointers to
+ capabilities but just capability structures. Update code. Add
+ argument exception_messenger. Set THREAD's exception messenger
+ according to it and CONTROL. Remove arguments aspace_out,
+ activity_out and exception_page_out. Don't save the old
+ capabilities.
+ (thread_raise_exception): Move body of function...
+ (thread_activate): ... to this new function. Update to use
+ messengers.
+ (thread_raise_exception): Implement in terms of it.
+ (thread_deliver_pending): New function.
+ * server.c: Include <hurd/ipc.h> and "messenger.h".
+ (DEBUG): If label is the IPC label, use "IPC" as the function.
+ (OBJECT_): Take additional parameter WRITABLE. Save whether the
+ object is writable in *WRITABLE. Update users.
+ (OBJECT): Likewise.
+ (server_loop): Update to use messengers and the new IPC interface.
+ Update method implementations appropriately. Don't marshal faults
+ using exception_fault_send_marshal but the new
+ activation_fault_send_marshal. Remove implementations of
+ object_slot_copy_out, object_slot_copy_in and object_slot_read.
+ Reimplement object_discard. In the thread_exregs implementation,
+ handle the exception messenger. Implement thread_id. Remove
+ thread_wait_object_destroyed. Implement
+ object_reply_on_destruction. In activity_info and
+ activity_policy, don't operate on PRINCIPAL but the invoke
+ activity. Implement thread_activation_collect. When blocking on
+ a futex, don't enqueue the calling thread but the reply messenger.
+ Implement the messenger_id method.
+ (REPLY): Redefine before processing an object invocation to reply
+ using the reply messenger included in the request.
+
+ * rm.h: Include <l4/message.h>.
+ (rm_method_id_string): Don't handle object_slot_copy_out,
+ object_slot_copy_in, object_slot_read, exception_collect or
+ thread_wait_object_destroyed. Handle object_reply_on_destruction,
+ thread_id, thread_activation_collect.
+ (RPC_TARGET_NEED_ARG): Don't undefine.
+ (RPC_TARGET): Don't define.
+ (struct io_buffer): Redefine in terms of L4_NUM_BRS.
+ (write): Update interface specification according to new IDL
+ interface. Update users.
+ (read): Likewise.
+ (as_dump): Likewise.
+ (fault): Likewise.
+ (RPC_STUB_PREFIX): Don't undefine.
+ (RPC_ID_PREFIX): Likewise.
+
2008-12-11 Neal H. Walfield <neal@gnu.org>
* viengoos.c (bootstrap): Add code to configure the memory to