summaryrefslogtreecommitdiff
path: root/viengoos/rm.h
AgeCommit message (Collapse)Author
2008-05-232008-05-23 Neal H. Walfield <neal@gnu.org>neal
* rm.h (rm_method_id_string): Handle the case where ID is RM_activity_stats.
2008-05-23hurd/neal
2008-05-23 Neal H. Walfield <neal@gnu.org> * cap.h (RM_object_status): Define. (object_dirty): Likewise. (object_referenced): Likewise. (object_status): New method. * folio.h (struct folio): Add fields dirty and referenced. (folio_object_referenced): New function. (folio_object_referenced_set): Likewise. (folio_object_dirty): Likewise. (folio_object_dirty_set): Likewise. viengoos/ 2008-05-23 Neal H. Walfield <neal@gnu.org> * rm.h (rm_method_id_string): Handle the case where ID is RM_object_status. * server.c (server_loop): Implement the object_status method. * ager.c (ager_loop): Set DESC->USER_DIRTY and DESC->REFERENCED as appropriate. * object.c (folio_object_alloc): Clear ODESC->USER_REFERENCED and ODESC->USER_DIRTY. (folio_object_alloc): Clear the object's user referenced and user dirty bits. * object.h (struct object_desc): Add fields user_dirty and user_referenced. (object_desc_unmap): Update DESC->USER_DIRTY and DESC->USER_REFERENCED appropriately. (object_desc_flush): LIkewise.
2008-02-20hurd/neal
2008-02-20 Neal H. Walfield <neal@gnu.org> * cap.h (RM_object_discarded_clear): Define. (object_discarded_clear): New method. viengoos/ 2008-02-20 Neal H. Walfield <neal@gnu.org> * server.c (server_loop): Implement object_discarded_clear method. * rm.h (rm_method_id_string): Handle RM_object_discarded_clear case.
2008-02-082008-02-08 Neal H. Walfield <neal@gnu.org>neal
* rm.h (rm_method_id_string): Handle RM_thread_wait_object_destroyed.
2008-02-082008-02-08 Neal H. Walfield <neal@gnu.org>neal
* rm.h (as_dump): Change parameter to specify the root of an address space, not necessarily a thread object. * server.c (server_loop): Update as_dump implementation to be consistent with the new as_dump API. * server.c (ROOT): First lookup the capability using CAP. If it is not a thread object, only then get the slot.
2008-01-15hurd/neal
2008-01-15 Neal H. Walfield <neal@gnu.org> * futex.h (futex_wait): New file. * Makefile.am (includehurd_HEADERS): Add futex.h. * headers.m4: Link $(BUILDIR)/include/hurd/futex.h to futex.h. * RPC: Add futex message id assignment. * folio.h (struct folio): Add field wait_queue. Remove field checksum (for now). viengoos/ 2008-01-15 Neal H. Walfield <neal@gnu.org> * object.h (struct thread): New forward. (object_wait_queue_head): New declaration. (object_wait_queue_tail): New declaration. (object_wait_queue_next): New declaration. (object_wait_queue_prev): New declaration. (object_wait_queue_enqueue): New declaration. (object_wait_queue_dequeue): New declaration. (object_wait_queue_for_each): New macro. * object.c (object_wait_queue): New function. (object_wait_queue_head): Likewise. (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. (object_wait_queue_dequeue): Likewise. * thread.h (struct wait_queue_node): New structure. (struct thread): Add fields wait_queue_head, wait_queue_tail, futex_block, futex_offset and wait_queue. * thread.c (thread_deinit): If THREAD is enqueue on a wait queue, dequeue it. * rm.h: Include <hurd/futex.h>. (rm_method_id_string): Handle the RM_futex case. * server.c: Include <hurd/futex.h>. (server_loop): Implement the rm_futex method. ruth/ 2008-01-15 Neal H. Walfield <neal@gnu.org> * ruth.c: Include <hurd/futex.h>. (main) Test futex implementation.
2008-01-01libhurd-mm/neal
2008-01-01 Neal H. Walfield <neal@gnu.org> * activity.h (RM_activity_properties): Rename... (RM_activity_policy): ... to this. Update users. (struct activity_memory_policy): New structure. (ACTIVITY_MEMORY_POLICY): New definition. (ACTIVITY_MEMORY_POLICY_VOID): Likewise. (struct activity_policy): New structure. (ACTIVITY_POLICY): New definition. (ACTIVITY_POLICY_VOID): Likewise. (ACTIVITY_PROPERTIES_PRIORITY_SET): Rename... (ACTIVITY_POLICY_SIBLING_REL_PRIORITY_SET): ... to this. Update users. (ACTIVITY_PROPERTIES_WEIGHT_SET): Rename... (ACTIVITY_POLICY_SIBLING_REL_WEIGHT_SET): ... to this. Update users. (ACTIVITY_PROPERTIES_STORAGE_QUOTA_SET): Rename... (ACTIVITY_POLICY_STORAGE_SET): ... to this. Update users. (ACTIVITY_PROPERTIES_ALL_SET): Rename... (ACTIVITY_POLICY_SIBLING_REL_SET): ... to this. (ACTIVITY_POLICY_CHILD_REL_PRIORITY_SET): New definition. (ACTIVITY_POLICY_CHILD_REL_WEIGHT_SET): Likewise. (ACTIVITY_POLICY_CHILD_REL_SET): Likewise. (activity_properties): Rename... (activity_policy): ... to this. Accept a structure rather than individual variables. Update callers. viengoos/ 2008-01-01 Neal H. Walfield <neal@gnu.org> * activity.h: Don't include <l4.h>, <errno.h> or <hurd/btree.h>. Include <hurd/activity.h>. (struct activity): Remove fields priority, weight and storage_quota. Replace with policy. Change folio_count to a uint32_t. Update users. * server.c (server_loop): Remove activity_properties implementation. Add activity_policy implementation. * rm.h (rm_method_id_string): Remove RM_activity_properties case. Handle RM_activity_policy. ruth/ 2008-01-01 Neal H. Walfield <neal@gnu.org> * ruth.c (main): Remove activity_properties test. Replace with activity_policy test.
2007-12-18viengoos/neal
2007-12-18 Neal H. Walfield <neal@gnu.org> * rm.h: Don't include <assert.h>, <l4.h>, <errno.h>, <hurd/types.h>, <hurd/addr.h> or <hurd/addr-trans.h>. Include <hurd/folio.h> and <hurd/exceptions.h>. (RM_folio_alloc, RM_folio_free, RM_folio_object_alloc, folio_alloc, folio_free, folio_object_alloc): Move from here... * ../hurd/folio.h: ... to this file. * rm.h (RM_cap_copy, RM_cap_read, RM_object_slot_copy_out, RM_object_slot_copy_in, RM_object_slot_read, cap_copy, cap_read, object_slot_copy_out, object_slot_copy_in, object_slot_read, CAP_COPY_COPY_ADDR_TRANS_SUBPAGE, CAP_COPY_COPY_ADDR_TRANS_GUARD, CAP_COPY_COPY_SOURCE_GUARD, CAP_COPY_WEAKEN): Move from here... * ../hurd/folio.h: ... to this file. * rm.h (RM_exception_collect, exception_collect): Move from here... * ../hurd/exceptions.h: ... to this file. hurd/ 2007-12-18 Neal H. Walfield <neal@gnu.org> * folio.h: Include <hurd/addr.h>, <hurd/startup.h> and <stdint.h>. (RM_folio_alloc, RM_folio_free, RM_folio_object_alloc, folio_alloc, folio_free, folio_object_alloc): Move here... * ../viengoos/rm.h: ... from this file. * cap.h: Don't include <hurd/rm.h>. Include <hurd/startup.h>. (RM_cap_copy, RM_cap_read, RM_object_slot_copy_out, RM_object_slot_copy_in, RM_object_slot_read, cap_copy, cap_read, object_slot_copy_out, object_slot_copy_in, object_slot_read, CAP_COPY_COPY_ADDR_TRANS_SUBPAGE, CAP_COPY_COPY_ADDR_TRANS_GUARD, CAP_COPY_COPY_SOURCE_GUARD, CAP_COPY_WEAKEN): Move here... * ../viengoos/rm.h: ... from this file. * exceptions.h: Include <hurd/thread.h>. (RM_exception_collect, exception_collect): Move here... * ../viengoos/rm.h: ... from here.
2007-12-13viengoos/neal
2007-12-13 Neal H. Walfield <neal@gnu.org> * rm.h (folio_object_alloc): Take additional parameter, a slot to store a weak capability. (CAP_COPY_WEAKEN): Define. * server.c (server_loop): Update implementation of folio_object_alloc to accept the additional parameter. If not ADDR_VOID, store a weak capability to the created object in the specified slot. If the CAP_COPY_WEAKEN flag is specified in a object_slot_copy_out, object_slot_copy_in or cap_copy invocation, copy a weakened capability to the target slot. hurd/ 2007-12-13 Neal H. Walfield <neal@gnu.org> * cap.h (cap_type_weak_p): New function. (cap_type_weaken): Likewise. (cap_copy_x): If CAP_COPY_WEAKEN is set in FLAGS, weaken the capability stored in TARGET. libhurd-mm/ 2007-12-13 Neal H. Walfield <neal@gnu.org> * storage.c (storage_alloc_): Update to folio_object_alloc's interface change. (storage_free_): Likewise. ruth/ 2007-12-13 Neal H. Walfield <neal@gnu.org> * ruth.c (main): Update users of folio_object_alloc to interface change.
2007-12-132007-12-13 Neal H. Walfield <neal@gnu.org>neal
* rm.h (rm_putchar): Remove function. (putchar): Generate method stubs using RPC_SIMPLE.
2007-12-13hurd/neal
2007-12-13 Neal H. Walfield <neal@gnu.org> * rpc.h (RPCSTOREARG): Remove type_suffix argument. Update callers. (RPCSTOREARG): Make a__ a TYPE *, not a TYPE. (RPCLOAD): Remove deref argument. Update callers. (RPCLOADARG): Remove deref argument, don't apply it to ARG. Update callers. (RPC_GRAB): Rename from this... (RPC_GRAB2): ... to this. Update callers. (RPC_GRAB): New macro. (RPC): Require that the formal out arguments take values not references. Change the reply marshal function arguments to take values, not references. viengoos/ 2007-12-13 Neal H. Walfield <neal@gnu.org> * rm.h (cap_read): Change out arguments to the actual types and not references. (object_slot_read): Likewise. * server.c (server_loop): Update calls to reply marshal functions to pass values, not references.
2007-12-10viengoos/neal
2007-12-10 Neal H. Walfield <neal@gnu.org> Properly account memory and folios. * activity.h (struct activity): Remove field objects. New fields parent_ptr, active, inactive_clean, inactive_dirty and dying. (root_activity): New declaration. (activity_create): Return void. Don't take priority, weight and storage_quota arguments. Update callers. (activity_for_each_ancestor): New macro. (activity_charge): New function. (activity_for_each_child): New macro. (activity_dump): New declaration. (activity_consistency_check_): Likewise. (activity_consistency_check): New macro. * activity.c (root_activity): Define. (activity_create): Return void. Don't take priority, weight and storage_quota arguments. Remove relevant functionality. Set CHILD->PARENT_PTR appropriately. Be careful when bootstrapping. (activity_destroy): Check that VICTIM->DYING is not set. If so, panic. Otherwise, set it. When recursively destroying an activity, call object_free, not activity_destroy, to clean up. Abandon all own frames. Assert that VICTIM->FRAMES and VICTIM_FOLIO_COUNT are 0. Set PARENT->CHILDREN to VICTIM->SIBLING_NEXT if VICTIM is the head of the list. (do_activity_dump): New function. (activity_dump): New function. (activity_consistency_check_): New function. * object.h: Don't include "thread.h". (struct object_desc): Remove field activity. Rename field alru to activity_lru. Rename field GLRU to global_lru. New fields dirty, age and activity. (LINK_TEMPLATE): New macro. Use it. (dirty): Remove declaration. (clean): Likewise. (global_active): New declaration. (global_inactive_dirty): Likewise. (global_inactive_clean): Likewise. (disowned): Likewise. (object_desc_disown_simple): New function. (object_disown_simple): Likewise. (object_desc_disown_): Likewise. (object_disown_): Likewise. (object_desc_disown): New macro. (object_disown): Likewise. (object_desc_claim_): New function. (object_claim_): Likewise. (object_desc_claim): New macro. (object_claim): Likewise. (folio_parent): Remove parameter principal. Update callers. (object_free): Improve parentheses. * object.c: Include "thread.h". (global_active): Define. (global_inactive_dirty): Likewise. (global_inactive_clean): Likewise. (disowned): Likewise. (object_init): Add asserts. (memory_object_setup): Rename from this... (memory_object_alloc): ... to this. Take additional parameters, the type, oid and version. Also set up the object's descriptor. Update callers. (memory_object_destroy): Add asserts. Remove object from the various linked lists. If OBJECT is an activity, assert that there are no frames allocated against it. (object_find_soft): If OBJECT is not accounted or inactive, assign to ACTIVITY. (folio_reparent): Rename from this... (folio_parent): ... to this. Remove the parameter PRINCIPAL. Use ACTIVITY where PRINCIPAL was previous used. Add asserts. Correctly add FOLIO to ACTIVITY's folio list. (folio_alloc): Check if the activity's storage quota allows the allocation of another folio. Account the allocation of the folio. (folio_free): Add asserts. Correctly account the folio. Clear FOLIO->NEXT and FOLIO->PREV. Disown FOLIO's frame. (folio_object_alloc): Assign OBJECT to ACTIVITY. When creating an activity, call activity_create. * cap.h (cap_set): Take additional parameter, a struct activity *. Pass it to cap copy. * cap.c Include "thread.h". (cap_set_object): Remove dead function. (cap_to_object): Clear CAP->TYPE if object_find returns NULL. (cap_shootdown): Asser that ACTIVITY is not NULL. * viengoos.c (root_activity): Don't define here. * t-as.c (root_activity): Remove static qualifier. * t-link.c: New file. * t-activity.c: New file. * Makefile.am (TESTS): Add t-activity and t-link. (t_activity_CPPFLAGS): New variable. (t_activity_SOURCES): Likewise. (t_activity_LDADD): Likewise. (t_link_CPPFLAGS): Likewise. (t_link_SOURCES): Likewise. * rm.h (RM_as_dump): Define. (rm_method_id_string): Remove case for RM_activity_create. (as_dump): New method. * server.c (server_loop): Add support for method as_dump. Remove support for method activity_create. hurd/ 2007-12-10 Neal H. Walfield <neal@gnu.org> * activity.h (RM_activity_create): Don't define. (activity_create): Remove method. ruth/ 2007-12-10 Neal H. Walfield <neal@gnu.org> * ruth.c (main): Don't call rm_activity_create.
2007-12-04viengoos/neal
2007-12-04 Neal H. Walfield <neal@gnu.org> Remove exception threads. Replace with support for activations. * thread.h (THREAD_SLOTS): Bump to 3. (struct thread): Add field exception_page. Remove fields have_exception and exception. (thread_exregs): Take additional arguments exception_page and exception_page_out. Update users. (thread_raise_exception): New declaration. * thread.c (THREAD_VERSION): Define. (thread_init): Remove code related to the exception thread. (thread_commission): Likewise. (thread_decommission): Likewise. (thread_exregs): Likewise. Take additional arguments EXCEPTION_PAGE and EXCEPTION_PAGE_OUT. If CONTROL contains HURD_EXREGS_GET_REGS and EXCEPTION_PAGE_OUT is not NULL, return a capability to THREAD's exception page in *EXCEPTION_PAGE_OUT. If CONTROL contains HURD_EXREGS_SET_EXCEPTION_PAGE, then set THREAD's exception page to EXCEPTION_PAGE. (thread_raise_exception): New function. * server.c (server_loop): Remove code related to handling the exception thread. Call thread_raise_exception to propagate exception. Reimplement the exception_collect method. Update implementation of the thread_exregs method to support the new argument passing scheme. Add support for setting and retrieving the exception page. (REPLYW): Only clear MSG here. * rm.h (exception_collect): Take an additional argument, the principal. * object.h (object_type): New function. hurd/ 2007-12-04 Neal H. Walfield <neal@gnu.org> Remove exception threads. Replace with support for activations. * thread.h: Include <l4/ipc.h>. (struct exception_page): New structure. (THREAD_EXCEPTION_PAGE_SLOT): Define. (HURD_EXREGS_EXCEPTION_THREAD): Don't define. (HURD_EXREGS_SET_EXCEPTION_PAGE): Define. (HURD_EXREGS_SET_REGS): Update. (hurd_exception_handler_t): New definition. (struct hurd_thread_exregs_in): New structure. (struct hurd_thread_exregs_out): New structure. (thread_exregs): Replace the bulk of the arguments with struct hurd_thread_exregs_in and struct hurd_thread_exregs_out. Update users. * exceptions.h (HURD_THREAD_MAIN_VERSION): Remove macro. (HURD_THREAD_EXCEPTION_VERSION): Likewise. (hurd_thread_is_exception_thread): Remove function. (hurd_thread_is_main_thread): Likewise. (hurd_exception_thread): Likewise. (hurd_main_thread): Likewise. (exception_handler_loop): Remove declaration. (exception_handler): New declaration. (exception_handler_entry): Likewise. (exception_handler_end): Likewise. libhurd-mm/ 2007-12-04 Neal H. Walfield <neal@gnu.org> Remove exception threads. Replace with support for activations. * Makefile.am (ARCH_SOURCES): New variable. [ARCH_IA32]: Add ia32-exception-entry.S. (libhurd_mm_a_SOURCES): Add $(ARCH_SOURCES). * ia32-exception-entry.S: New file. * exceptions.c: Include <hurd/storage.h> and <hurd/thread.h>. (ARG): Don't define. (ARG64): Likewise. (ARG_ADDR): Likewise. (CHECK): Likewise. (exception_handler_loop): Remove function. (exception_fetch_exception): New function. (exception_handler): New function. (STACK_SIZE): Don't define. (stack): Don't declare. (exception_handler_init): Set up the thread's exception page. libpthread/ 2007-12-04 Neal H. Walfield <neal@gnu.org> Remove exception threads. Replace with support for activations. * sysdeps/l4/hurd/pt-sysdep.h (PTHREAD_SYSDEP_MEMBERS): Remove fields exception_handler_stack and exception_handler_sp. Add field exception_page. * sysdeps/l4/hurd/pt-thread-alloc.c (__pthread_thread_alloc): Allocate a page for THREAD->EXCEPTION_PAGE, not THREAD->EXCEPTION_HANDLER_STACK. * sysdeps/l4/hurd/ia32/pt-setup.c: Include <hurd/thread.h> and <hurd/exceptions.h>. (__pthread_setup): Remove code dealing with the exception thread. Set up the exception page. * sysdeps/l4/hurd/pt-thread-start.c (__pthread_thread_start): Remove code dealing with the exception thread. Update to use new rm_thread_exregs interface. Also set the thread's exception page. * sysdeps/l4/hurd/pt-thread-halt.c (__pthread_thread_halt): Remove code to dealing with the exception thread. Free the THREAD->EXCEPTION_PAGE. ruth/ 2007-12-04 Neal H. Walfield <neal@gnu.org> * ruth.c (main): Update to use new rm_thread_exregs interface.
2007-12-01hurd/neal
2007-12-01 Neal H. Walfield <neal@gnu.org> * rpc.h: Rewrite to more elegantly generate stubs. * activity.h: Update to use new RPC stub generation interface. * exceptions.h: Likewise. * thread.h: Likewise. viengoos/ 2007-12-01 Neal H. Walfield <neal@gnu.org> * rm.h: Update to use new RPC stub generation interface.
2007-11-29hurd/neal
2007-11-29 Neal H. Walfield <neal@gnu.org> * activity.h: Include <hurd/addr.h>. Add method id RM_activity_properties. (ACTIVITY_PROPERTIES_PRIORITY_SET): Define. (ACTIVITY_PROPERTIES_WEIGHT_SET): Likewise. (ACTIVITY_PROPERTIES_STORAGE_QUOTA_SET): Likewise. (ACTIVITY_PROPERTIES_ALL_SET): Likewise. (activity_properties): New declaration. * rpc.h (RPC53): New macro. viengoos/ 2007-11-29 Neal H. Walfield <neal@gnu.org> * server.c (OBJECT_): Just pass REQUIRE_WRITABLE on to CAP_. (server_loop): Save the capability that identifies the principal. Implement the RM_activity_properties method. * rm.h (rm_method_id_string): Handle the RM_activity_properties case. ruth/ 2007-11-29 Neal H. Walfield <neal@gnu.org> * ruth.c (main): Add test for activity_properties.
2007-11-28hurd/neal
2007-11-28 Neal H. Walfield <neal@gnu.org> * Makefile.am (includehurd_HEADERS): Add activity.h. * headers.m4: Create link from ../include/hurd/activity.h to activity.h. * activity.h: New file. viengoos/ 2007-11-28 Neal H. Walfield <neal@gnu.org> * activity.h (activity_allocate): Rename from this... (activity_create): ... to this. Remove arguments caller, folio, indent, activity and control. Add argument child. Update users. * activity.c (activity_allocate): Rename from this... (activity_create): ... to this. Remove arguments caller, folio, indent, activity and control. Add argument child. If CHILD is live, destroy it first. Correctly add CHILD to PARENT's children list. * activity.h (activity_destroy): Remove argument cap. Update callers. * activity.c (activity_destroy): Remove argument cap. Correctly destroy child activities and allocated folios. Correctly unlink from parent. * server.c (CAP_): Remove argument writablep. Add argument require_writable. Fail if REQUIRE_WRITABLE is true, and the object is not writable. (OBJECT_): Likewise. (CAP): Remove argument writablep. Add argument require_writable. Update callers. (OBJECT): Likewise. (server_loop): Add support for the activity_create method. * object.c (folio_free): Also update FOLIO->FOLIO_VERSION. (folio_object_alloc): Check if the object is a cap_activity_control, not a cap_activity. (folio_reparent): Correctly link FOLIO to PARENT. * t-as.c (test): Don't create a cap_activity object but a cap_activity_control object. * viengoos.c (system_task_load): Likewise. * cap.c (cap_to_object): Use cap_types_compatible when asserting that the capability's type and the object's type are identical. * thread.c (thread_exregs): Use cap_types_compatible when checking whether the thread has a valid activity object. * rm.h: Include <hurd/activity.h>. (rm_method_id_string): Handle the RM_activity_create case. ruth/ 2007-11-28 Neal H. Walfield <neal@gnu.org> * ruth.c: Include <hurd/activity.h>. (main): Add test for activity_create.
2007-11-22viengoos/neal
2007-11-22 Neal H. Walfield <neal@gnu.org> * thread.h (struct thread): Add fields efalgs, user_handle and init. (thread_create_in): Rename from this... (thread_init): ... to this. Remove the activity argument. Update all users. (thread_create): Remove declaration. (thread_destroy): Rename from this... (thread_deinit): ... to this. Update all users. (thread_send_sp_ip): Remove declaration. (thread_exregs): New declaration. * thread.c: Include <hurd/thread.h>. (thread_lookup): Add additional asserts. (thread_create_in): Rename from this... (thread_init): ... to this. Remove the activity argument. Don't set THREAD->ACTIVITY. Set THREAD->INIT to true. (thread_create): Remove function. (thread_destroy): Rename from this... (thread_deinit): ... to this. Correctly calculate the bit to deallocate. Fix assert. Set THREAD->INIT to false. (thread_commission): If THREAD->INIT is false, first call thread_init. Correctly calculate the thread ids to initialize. (thread_send_sp_ip): Remove function. (thread_exregs): New function. * rm.h (RPC_STUB_PREFIX): Include <hurd/thread.h>. (rm_method_id_string): Support RM_thread_exregs. (THREAD_ASPACE_SLOT, THREAD_ACTIVITY_SLOT): Move from... * ../hurd/thread.h: ... to this new file. * server.c: Include <hurd/thread.h>. (server_loop): Implement the thread_exregs RPC. * viengoos.c (system_task_load): Set THREAD->ACTIVITY to a capability designating ROOT_ACTIVITY. hurd/ 2007-11-22 Neal H. Walfield <neal@gnu.org> * Makefile.am (includehurd_HEADERS): Add thread.h. * headers.m4: Link $(BUILDIR)/include/hurd/thread.h to thread.h. * thread.h: New file. * rpc.h: Include <errno.h>. ruth/ 2007-11-22 Neal H. Walfield <neal@gnu.org> * ruth.c: Include <hurd/thread.h>. (main): Add test case for thread creation.
2007-11-222007-11-22 Neal H. Walfield <neal@gnu.org>neal
* rm.h (CAP_COPY_COPY_SUBPAGE): Rename from this... (CAP_COPY_COPY_ADDR_TRANS_SUBPAGE): ... to this. Update all users. (CAP_COPY_COPY_GUARD): Rename from this... (CAP_COPY_COPY_ADDR_TRANS_GUARD): ... to this. Update all users. (CAP_COPY_COPY_SOURCE_GUARD): New constant.
2007-11-19hurd/neal
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.
2007-11-19hurd/neal
2007-11-19 Neal H. Walfield <neal@gnu.org> * Makefile.am (includehurd_HEADERS): Add rpc.h and exceptions.h. * headers.m4: Link $(BUILDIR)/include/hurd/rpc.h to rpc.h. * rpc.h: New file. Moved and generalized definitions RPC template definitions here from ../viengoos/rm.h. (RPC_CONCAT2): New macro. (RPC_CONCAT): Likewise. (RPC_STUB_PREFIX): Likewise. Use it to generate the stub names. (RPC_STUB_PREFIX_): New macro. (RPC_ID_PREFIX): Likewise. Use it to generate method ids. (RPC_ID_PREFIX_): New macro. (RPC_TARGET): Make sure this macro is defined. (RPC_TARGET_ARG_): Define. (RPC_TARGET_): Define. (RPC_MARSHAL): New macro. (RPC_UNMARSHAL): New macro. (RPCX): Use the above macros. Take four additional arguments, the list of in and out parameters with and without types. Update users. General marshal and unmarshal stubs. (RPCLOAD): Append argument to *MSG. (RPCSTORE): Store from *MSG, not registers. viengoos/ 2007-11-19 Neal H. Walfield <neal@gnu.org> * rm.h (RPC_STUB_PREFIX): Define. (RPC_ID_PREFIX): Likewise. (RPC_TARGET_NEED_ARG): Undefine. (RPC_TARGET): Define. #include <hurd/rpc.h>. (rm_putchar): Add declaration for __hurd_startup_data. (RPCX, RPCLOAD, RPCSTORE, RPC2, RPC3, RPC4, RPC5, RPC6, RPC7) (RPC8, RPC9, RPC22, RPC32, RPC42, RPC52): Move from here... * ../hurd/rpc.h: ... to here.
2007-11-162007-11-16 Neal H. Walfield <neal@gnu.org>neal
* viengoos/Makefile.am: New file based on ../wortel/Makefile.am. * viengoos/headers.m4: New file. * viengoos/config.m4: New file based on ../wortel/config.m4. * viengoos/viengoos.h: New file. * viengoos/viengoos.c: New file. * viengoos/activity.h: Likewise. * viengoos/activity.c: Likewise. * viengoos/as.h: Likewise. * viengoos/as.c: Likewise. * viengoos/cap-lookup.c: Likewise. * viengoos/cap.h: Likewise. * viengoos/cap.c: Likewise. * viengoos/thread.h: New file. * viengoos/thread.c: New file. * viengoos/object.h: New file. * viengoos/object.c: New file. * viengoos/rm.h: New file. * viengoos/server.c: New file. * viengoos/server.h: New file. * viengoos/zalloc.h: Copied from ../physmem. * viengoos/zalloc.c: Copied from ../physmem. Don't include "output.h". Include <hurd/stddef.h>. Change uses of min_page_size to PAGESIZE. * viengoos/memory.h: New file. * viengoos/memory.c: New file. * viengoos/sigma0.c: Copy from ../wortel. * viengoos/sigma0.h: Copy from ../wortel. Don't include "shutdown.h". Include <hurd/stddef.h>. * viengoos/bits.h: Likewise. * viengoos/panic.c: New file. * viengoos/debug.c: Likewise. * viengoos/debug.h: Likewise. * viengoos/boot-modules.h: Likewise. * viengoos/boot-modules.c: Likewise. * viengoos/elf.h: Copied from ../wortel. * viengoos/loader.c: New file based on ../wortel/loader.c. * viengoos/loader.h: New file. * viengoos/multiboot.h: Copied from Grub. * viengoos/mmap.c: New file based on ../physmem/mmap.c. * viengoos/malloc-wrap.c: New file based on ../physmem/malloc-wrap.c. * viengoos/malloc.c: Version 2.8.3 of Doug Lea's malloc.c. * viengoos/malloc.h: Version 2.8.3 of Doug Lea's malloc.h. * viengoos/ia32-cmain.c: New file based on ../wortel/ia32-cmain.c. * viengoos/ia32-crt0.S: Copied from ../wortel. (STACK_SIZE): Use a 16 page stack. * viengoos/ia32-output.c: Copied from ../wortel. * viengoos/ia32-shutdown.c: Likewise. * viengoos/output.h: New file based on ../wortel/output.h. Include <stdarg.h>. (cprintf): New definition. (output_debug): Don't define. (debug): Don't define. * viengoos/output.c: New file based on ../wortel/output.c. Don't include <stdlib.h>. (vprintf): New function. (printf): Implement in terms of vprintf. * viengoos/output-none.c: Copied from ../wortel. * viengoos/output-serial.c: Likewise. * viengoos/output-stdio.c: New file. * viengoos/output-vga.c: Copied from ../wortel. * viengoos/shutdown.h: New file based on ../wortel/shutdown.h. Don't include "output.h". (panic): Don't define. (shutdown): Rename from this... (shutdown_machine): ... to this. * viengoos/shutdown.c: New file based on ../wortel/shutdown.c. (reset) [_L4_TEST_ENVIRONMENT]: Call abort. (halt) [_L4_TEST_ENVIRONMENT]: Call abort. (shutdown): Rename from this... (shutdown_machine): ... to this. * viengoos/t-environment.h: New file based on ../libl4/tests/environment.h. Protect from multiple inclusion. Include <hurd/stddef.h>. Include <string.h>. Include <l4/stubs.h>. (program_name): New declaration. (check_nr): Don't assume that val1 and val2 are _L4_word_t, use typeof instead. (main): Call output_init. * viengoos/t-as.c: New file.