summaryrefslogtreecommitdiff
path: root/libhurd-mm
AgeCommit message (Collapse)Author
2009-01-16Conditionalize use of l4 functions on USE_L4.Neal H. Walfield
/ 2009-01-16 Neal H. Walfield <neal@gnu.org> * Makefile.am (L4_SUBDIRS): New variable. Set to l4 directories if USE_L4 is true, otherwise leave empty. (SUBDIRS): Remove libl4 and laden. Replace with $(USE_L4). Rearrange order. benchmarks/ 2009-01-16 Neal H. Walfield <neal@gnu.org> * activity-distribution.c (main): Use vg_thread_id_t and hurd_myself, not l4_thread_id_t and l4_myself. [USE_L4]: Only l4_sleep in this case. * cache.c (helper_fork): Use hurd_myself, not l4_myself. (main) [USE_L4]: Only call _L4_kdb in this case. * shared-memory-distribution.c (main): Use vg_thread_id_t and hurd_myself, not l4_thread_id_t and l4_myself. hieronymus/ 2009-01-16 Neal H. Walfield <neal@gnu.org> * hieronymus.c (main): Use uint64_t, not l4_uint64_t. (main) [USE_L4]: Don't sleep in this case. hurd/ 2009-01-16 Neal H. Walfield <neal@gnu.org> * lock.h (ss_mutex_trace_add) [! USE_L4]: Set SS_LOCK_TRACE[I].TID to zero. * thread.h (hurd_myself) [USE_L4]: Return l4_myself. * trace.h (trace_buffer_add) [! USE_L4 && ! RM_INTERN]: Use hurd_myself, not l4_myself. [! USE_L4 && RM_INTERN]: Don't print a tid. libc-parts/ 2009-01-16 Neal H. Walfield <neal@gnu.org> * _exit.c (_exit): Use sched_yield, not l4_yield. * backtrace.c [USE_L4]: Only include <l4.h> in this case. [! RM_INTERN]: Include <hurd/thread.h>. (backtrace_print) [! USE_L4 && ! RM_INTERN]: Use hurd_myself to get the caller's tid. [! USE_L4 && RM_INTERN]: Don't print a tid. * ia32-cmain.c [! USE_L4]: Don't include <l4/globals.h>, <l4/init.h>, <l4/stubs.h>, or <l4/stubs-init.h>. (cmain) [! USE_L4]: Don't call l4_init or l4_init_stubs. * loader.c: Don't include <l4.h>. Include <bits/wordsize.h> and <endian.h>. (loader_elf_load): Use __WORDSIZE, __BYTE_ORDER, __LITTLE_ENDIAN and __BIG_ENDIAN instead of their L4 names. * panic.c: Include <viengoos/thread.h>. [! RM_INTERN]: Include <hurd/thread.h>. (panic_) [! USE_L4 && ! RM_INTERN]: Use hurd_myself, not l4_myself. [! USE_L4 && RM_INTERN]: Don't print a tid. (panic_): Call sched_yield, not l4_yield. * process-spawn.c (process_spawn) [! USE_L4]: Don't pass utcb and kip information. Change sp from a l4_word_to to a uintptr_t. * profile.c [! USE_L4]: Don't include <l4.h>. (now) [__gnu_hurd_viengoos__ && ! USE_L4]: Just return 0. (struct profile_block): Change tid to a vg_thread_id_t. (MYSELF) [__gnu_hurd_viengoos__ && ! USE_L4]: Just return 0. * s_printf.c (io_buffer_flush) [! USE_L4]: Abort. libhurd-mm/ 2009-01-16 Neal H. Walfield <neal@gnu.org> * anonymous.h: Don't include <l4/thread.h>. Include <viengoos/thread.h>. (struct anonymous_pager): Change fill_thread's type to vg_thread_id_t. * anonymous.c (fault): Use hurd_myself and vg_niltid, not l4_myself and l4_nilthread. * as-build.c: Don't include <l4.h>. * as.h: Include <hurd/thread.h>. Don't include <l4/types.h>. (as_lock): Change as_rwlock_owner's type to vg_thread_id_t. Use hurd_myself, not l4_myself. (as_lock_readonly): Likewise. (as_unlock): Likewise. * as.c [! USE_L4]: Don't include <l4/types.h> or <l4/kip.h>. Include <bits/wordsize.h>. (DATA_ADDR_MAX): Define for 64-bit virtual address spaces. (as_rwlock_owner): Change type to vg_thread_id_t. (as_alloc_slow) [USE_L4]: Only check for conflicts with the kip and utcb in this case. (as_init) [USE_L4]: Only reserve the kip and utcb in this case. * exceptions.c [USE_L4]: Only include <l4/thread.h> in this case. (l4_utcb_state_save) [! USE_L4]: Make a no-op. (l4_utcb_state_restore) [! USE_L4]: Likewise. (hurd_activation_handler_normal): Use hurd_myself, not l4_myself. * map.c: Don't include <l4.h>. (map_fault): Use VG_WRITE, not L4_FPAGE_WRITABLE. * storage.c (storage_check_reserve_internal): Change as_rwlock_owner's type to vg_thread_id_t. libpthread/ 2009-01-16 Neal H. Walfield <neal@gnu.org> * sysdeps/viengoos/pt-spin.c [USE_L4]: Only include <l4.h> in this case. (_pthread_spin_lock): Only implement exponential back off if a sleep function is available. * sysdeps/viengoos/pt-stack-alloc.c: Don't include <l4.h>. * sysdeps/viengoos/pt-sysdep.c (sched_yield) [! USE_L4]: Just return. (init_routine) [USE_L4]: Abort. * sysdeps/viengoos/pt-sysdep.h [USE_L4]: Only include <l4.h> in this case. (_pthread_self) [! USE_L4]: Abort. * sysdeps/viengoos/pt-thread-alloc.c (__pthread_thread_alloc): Use hurd_myself, not l4_myself. [! USE_L4]: Abort. * sysdeps/viengoos/pt-thread-start.c (__pthread_thread_start): Use hurd_myself, not l4_myself. use uintptr_t, not l4_word_t. * sysdeps/viengoos/sig-sysdep.h (SIGNAL_DISPATCH_ENTRY) [! USE_L4]: Abort. (SIGNAL_DISPATCH_EXIT) [! USE_L4]: Likewise. libviengoos/ 2009-01-16 Neal H. Walfield <neal@gnu.org> * viengoos/thread.h (VG_READ): Define. (VG_WRITE): Define. (VG_EXECUTE): Likewise. (VG_ACTIVATION_FAULT_INFO_PRINTF): Use them. ruth/ 2009-01-16 Neal H. Walfield <neal@gnu.org> * ruth.c [USE_L4]: Only include <l4.h> in this case. (main) [! USE_L4]: Don't print resource manager's thread id. (main): Use uintptr_t, not l4_word_t. Use hurd_myself, not l4_myself. Use sched_yield, not l4_yield. Improve synchronization for object_reply_on_destruction test in case sched_yield is a no-op. viengoos/ 2009-01-16 Neal H. Walfield <neal@gnu.org> * cap.h: Don't include <l4.h>. * mutex.h [USE_L4]: Only include <l4/thread.h> in this case. (ss_mutex_t) [! USE_L4]: Define to be an int. (ss_mutex_lock) [! USE_L4]: Make a no-op. (ss_mutex_unlock) [! USE_L4]: Likewise. (ss_mutex_trylock) [! USE_L4]: Likewise. * object.h [USE_L4]: Only include <l4.h> in this case. (object_desc_unmap) [! USE_L4]: Make a no-op. (object_desc_flush) [! USE_L4]: Likewise. * thread.h: Don't include <l4.h>. (struct thread): Make tid a vg_thread_id_t, not an l4_thread_id_t. (thread_lookup): Make threadid a vg_thread_id_t, not an l4_thread_id_t.
2009-01-16Add macros to print the register file. Use them.Neal H. Walfield
hurd/ 2009-01-16 Neal H. Walfield <neal@gnu.org> * thread.h (AF_REGS_FMT): New macro. (AF_REGS_PRINTF): Likewise. libhurd-mm/ 2009-01-16 Neal H. Walfield <neal@gnu.org> * exceptions.c (hurd_activation_stack_dump): Use AF_REGS_FMT and AF_REGS_PRINTF rather than naming the registers explicitly. (hurd_activation_handler_normal): Likewise.
2009-01-16Add asserts to the activation test in mm-init.c.Neal H. Walfield
2009-01-16 Neal H. Walfield <neal@gnu.org> * mm-init.c (mm_init) [!NDEBUG && i386]: Clear STORAGE and assert that it is not VG_ADDR_VOID before freeing the associated storage. Assert that the fault callback was called.
2009-01-16Change the type of extract_bits data argument to uintptr_t.Neal H. Walfield
2009-01-16 Neal H. Walfield <neal@gnu.org> * bits.h (extract_bits): Make W a uintptr_t, not an unsigned int. (extract_bits_inv): Likewise.
2008-12-18Support batching requests for object_discarded_clear.Neal H. Walfield
libviengoos/ 2008-12-18 Neal H. Walfield <neal@gnu.org> * viengoos/cap.h (object_discarded_clear): Take additional parameter count. Take multiple object addresses. viengoos/ 2008-12-18 Neal H. Walfield <neal@gnu.org> * server.c (server_loop): Handle multiple objects in object_discarded_clear. libhurd-mm/ 2008-12-18 Neal H. Walfield <neal@gnu.org> * anonymous.c (fault): Batch object discard requests.
2008-12-18Fix address computation error.Neal H. Walfield
2008-12-18 Neal H. Walfield <neal@gnu.org> * exceptions.c (hurd_activation_state_alloc): Cast UTCB to a void *.
2008-12-18Unlock the folio before calling rm_folio_object_alloc.Neal H. Walfield
2008-12-18 Neal H. Walfield <neal@gnu.org> * storage.c (struct storage_desc): Add field owner. (shadow_setup): Set DESC->OWNER appropriately. (storage_alloc): Likewise. (storage_free_): Likewise. (storage_init): Likewise. (storage_alloc): Move code that updates DESC to before we call rm_folio_object_alloc. Unlock DESC->LOCK before calling it.
2008-12-18Set UTCB->TID when initializing the UTCB, not lazily.Neal H. Walfield
hurd/ 2008-12-18 Neal H. Walfield <neal@gnu.org> * thread.h (hurd_myself): Assume UTCB->TID is set correctly. libhurd-mm/ 2008-12-18 Neal H. Walfield <neal@gnu.org> * exceptions.c (hurd_activation_state_alloc): Set UTCB->TID.
2008-12-18Make the number of reserve messengers a function of the number of threads.Neal H. Walfield
2008-12-18 Neal H. Walfield <neal@gnu.org> * message-buffer.c (num_threads): New function. (BUFFERS_LOW_WATER): Define in terms of the number of threads. (BUFFERS_HIGH_WATER): Likewise.
2008-12-18Fix logic error.Neal H. Walfield
2008-12-18 Neal H. Walfield <neal@gnu.org> * message-buffer.c (hurd_message_buffer_alloc): Fix compare and swap logic.
2008-12-18Maintain a reserve of message buffers.Neal H. Walfield
2008-12-18 Neal H. Walfield <neal@gnu.org> * message-buffer.c: Include <hurd/mm.h>. (hurd_message_buffer_free_internal): Remove function. Move body to... (hurd_message_buffer_free): ... this function. Update users. (BUFFERS_HIGH_WATER): New define. (hurd_message_buffer_alloc): If the number of buffers in the reserve dips below BUFFERS_LOW_WATER, allocate enough to BUFFERS_HIGH_WATER.
2008-12-18Add vg_ prefix to the (hopefully) remaining viengoos symbols.Neal H. Walfield
2008-12-18 Neal H. Walfield <neal@gnu.org> * viengoos/activity.h (struct activity_memory_policy): Rename from this... (struct vg_activity_memory_policy): ... to this. Update users. (struct activity_policy): Rename from this... (struct vg_activity_policy): ... to this. Update users. (ACTIVITY_STATS_PERIODS): Rename from this... (VG_ACTIVITY_STATS_PERIODS): ... to this. Update users. (struct activity_stats): Rename from this... (struct vg_activity_stats): ... to this. Update users. (struct activity_info): Rename from this... (struct vg_activity_info): ... to this. Update users. * viengoos/addr.h (struct addr): Rename from this... (struct vg_addr): ... to this. Update users. * viengoos/cap.h (struct object_policy): Rename from this... (struct vg_object_policy): ... to this. Update users. (struct object_name): Rename from this... (struct vg_object_name): ... to this. Update users. (struct object): Rename from this... (struct vg_object): ... to this. Update users. * viengoos/folio.h (struct folio_policy): Rename from this... (struct vg_folio_policy): ... to this. Update users. (struct folio): Rename for this... (struct vg_folio): ... to this. Update users. * viengoos/thread.h (HURD_EXREGS_SET_UTCB): Rename from this... (VG_EXREGS_SET_UTCB): ... to this. Update users. (HURD_EXREGS_SET_EXCEPTION_MESSENGER): Rename from this... (VG_EXREGS_SET_EXCEPTION_MESSENGER): ... to this. Update users. (HURD_EXREGS_SET_ASPACE): Rename from this... (VG_EXREGS_SET_ASPACE): ... to this. Update users. (HURD_EXREGS_SET_ACTIVITY): Rename from this... (VG_EXREGS_SET_ACTIVITY): ... to this. Update users. (HURD_EXREGS_SET_SP): Rename from this... (VG_EXREGS_SET_SP): ... to this. Update users. (HURD_EXREGS_SET_IP): Rename from this... (VG_EXREGS_SET_IP): ... to this. Update users. (HURD_EXREGS_SET_SP_IP): Rename from this... (VG_EXREGS_SET_SP_IP): ... to this. Update users. (HURD_EXREGS_SET_EFLAGS): Rename from this... (VG_EXREGS_SET_EFLAGS): ... to this. Update users. (HURD_EXREGS_SET_USER_HANDLE): Rename from this... (VG_EXREGS_SET_USER_HANDLE): ... to this. Update users. (HURD_EXREGS_SET_REGS): Rename from this... (VG_EXREGS_SET_REGS): ... to this. Update users. (HURD_EXREGS_GET_REGS): Rename from this... (VG_EXREGS_GET_REGS): ... to this. Update users. (HURD_EXREGS_START): Rename from this... (VG_EXREGS_START): ... to this. Update users. (HURD_EXREGS_STOP): Rename from this... (VG_EXREGS_STOP): ... to this. Update users. (HURD_EXREGS_ABORT_SEND): Rename from this... (VG_EXREGS_ABORT_SEND): ... to this. Update users. (HURD_EXREGS_ABORT_RECEIVE): Rename from this... (VG_EXREGS_ABORT_RECEIVE): ... to this. Update users. (HURD_EXREGS_ABORT_IPC): Rename from this... (VG_EXREGS_ABORT_IPC): ... to this. Update users. (struct hurd_thread_exregs_in): Rename form this... (struct vg_thread_exregs_in): ... to this. Update users. (struct hurd_thread_exregs_out): Rename form this... (struct vg_thread_exregs_out): ... to this. Update users. (RPC_STUB_PREFIX): Define to vg_activation. Update users. (RPC_ID_PREFIX): Define to VG_ACTIVATION. Update users. (ACTIVATION_fault): Rename from this... (VG_ACTIVATION_fault): ... to this. Update users.
2008-12-17Rename vg_cap_copy to vg_cap_copy_simple.Neal H. Walfield
libviengoos/ 2008-12-17 Neal H. Walfield <neal@gnu.org> * viengoos/cap.h (vg_cap_copy): Rename from this... (vg_cap_copy_simple): ... to this. Update users. libc-parts/ 2008-12-17 Neal H. Walfield <neal@gnu.org> * process-spawn.c (process_spawn): Don't use vg_cap_copy but vg_cap_copy_simple. libhurd-mm/ 2008-12-17 Neal H. Walfield <neal@gnu.org> * as-build-custom.c (as_insert_custom): Don't use vg_cap_copy but vg_cap_copy_simple. * as.h (as_insert_full): Likewise.
2008-12-17Replace remaining rm_ prefixes with vg_.Neal H. Walfield
libhurd-mm/ 2008-12-17 Neal H. Walfield <neal@gnu.org> * exceptions.c (hurd_activation_fetch): Use vg_thread_activation_collect_send, not rm_thread_activation_collect_send. (hurd_activation_handler_init_early): Use vg_thread_exregs_send_marshal, not rm_thread_exregs_send_marshal. viengoos/ 2008-12-17 Neal H. Walfield <neal@gnu.org> * ager.c (update_stats): Use vg_activity_info_reply, not rm_activity_info_reply. * pager.c (pager_collect): Likewise. * object.c (folio_object_alloc): Use vg_object_reply_on_destruction_reply, not rm_object_reply_on_destruction_reply. * server.c (server_loop): Use vg_write_send_unmarshal, not rm_write_send_unmarshal. Use vg_write_reply, not rm_write_reply. Use VG_read_send_unmarshal, not rm_read_send_unmarshal. Use VG_read_reply, not rm_read_reply. Use VG_fault_send_unmarshal, not rm_fault_send_unmarshal. Use VG_fault_reply, not rm_fault_reply. Use VG_fault_reply, not rm_fault_reply. Use VG_folio_alloc_send_unmarshal, not rm_folio_alloc_send_unmarshal. Use VG_folio_alloc_reply, not rm_folio_alloc_reply. Use VG_folio_free_send_unmarshal, not rm_folio_free_send_unmarshal. Use VG_folio_free_reply, not rm_folio_free_reply. Use VG_folio_object_alloc_send_unmarshal, not rm_folio_object_alloc_send_unmarshal. Use VG_folio_object_alloc_reply, not rm_folio_object_alloc_reply. Use VG_folio_policy_send_unmarshal, not rm_folio_policy_send_unmarshal. Use VG_folio_policy_reply, not rm_folio_policy_reply. Use VG_cap_copy_send_unmarshal, not rm_cap_copy_send_unmarshal. Use VG_cap_copy_reply, not rm_cap_copy_reply. Use VG_cap_rubout_send_unmarshal, not rm_cap_rubout_send_unmarshal. Use VG_cap_rubout_reply, not rm_cap_rubout_reply. Use VG_cap_read_send_unmarshal, not rm_cap_read_send_unmarshal. Use VG_cap_read_reply, not rm_cap_read_reply. Use VG_object_discarded_clear_send_unmarshal, not rm_object_discarded_clear_send_unmarshal. Use VG_object_discarded_clear_reply, not rm_object_discarded_clear_reply. Use VG_object_discard_send_unmarshal, not rm_object_discard_send_unmarshal. Use VG_object_discard_reply, not rm_object_discard_reply. Use VG_object_status_send_unmarshal, not rm_object_status_send_unmarshal. Use VG_object_status_reply, not rm_object_status_reply. Use VG_object_name_send_unmarshal, not rm_object_name_send_unmarshal. Use VG_object_name_reply, not rm_object_name_reply. Use VG_thread_exregs_send_unmarshal, not rm_thread_exregs_send_unmarshal. Use VG_thread_exregs_reply, not rm_thread_exregs_reply. Use VG_thread_id_send_unmarshal, not rm_thread_id_send_unmarshal. Use VG_thread_id_reply, not rm_thread_id_reply. Use VG_object_reply_on_destruction_send_unmarshal, not rm_object_reply_on_destruction_send_unmarshal. Use VG_activity_policy_send_unmarshal, not rm_activity_policy_send_unmarshal. Use VG_activity_policy_reply, not rm_activity_policy_reply. Use VG_activity_info_send_unmarshal, not rm_activity_info_send_unmarshal. Use VG_activity_info_reply, not rm_activity_info_reply. Use VG_thread_activation_collect_send_unmarshal, not rm_thread_activation_collect_send_unmarshal. Use VG_thread_activation_collect_reply, not rm_thread_activation_collect_reply. Use VG_as_dump_send_unmarshal, not rm_as_dump_send_unmarshal. Use VG_as_dump_reply, not rm_as_dump_reply. Use VG_futex_reply, not rm_futex_reply. Use VG_futex_send_unmarshal, not rm_futex_send_unmarshal. Use VG_futex_reply, not rm_futex_reply. Use VG_futex_reply, not rm_futex_reply. Use VG_futex_reply, not rm_futex_reply. 2008-12-17 Neal H. Walfield <neal@gnu.org> * server.c: Don't include <hurd/exceptions.h>. * thread.c: Likewise. 2008-12-17 Neal H. Walfield <neal@gnu.org> * zalloc.c: Don't include <l4/math.h>. Include <viengoos/math.h>. (zfree): Use vg_msb instead of l4_msb. * ager.c (update_stats): Likewise.
2008-12-17Replace RPC rm prefix with vg.Neal H. Walfield
2008-12-17 Neal H. Walfield <neal@gnu.org> * viengoos/activity.h (RM_activity_policy): Rename from this... (VG_activity_policy): ... to this. Update users. (RM_activity_info): Rename from this... (VG_activity_info): ... to this. Update users. (RPC_STUB_PREFIX): Define to vg. (RPC_ID_PREFIX): Define to VG. * viengoos/cap.h (RM_cap_copy): Rename from this... (VG_cap_copy): ... to this. Update users. (RM_cap_rubout): Rename from this... (VG_cap_rubout): ... to this. Update users. (RM_cap_read): Rename from this... (VG_cap_read): ... to this. Update users. (RM_object_discarded_clear): Rename from this... (VG_object_discarded_clear): ... to this. Update users. (RM_object_discard): Rename from this... (VG_object_discard): ... to this. Update users. (RM_object_status): Rename from this... (VG_object_status): ... to this. Update users. (RM_object_reply_on_destruction): Rename from this... (VG_object_reply_on_destruction): ... to this. Update users. (RM_object_name): Rename from this... (VG_object_name): ... to this. Update users. (RPC_STUB_PREFIX): Define to vg. (RPC_ID_PREFIX): Define to VG. * viengoos/folio.h (RM_folio_alloc): Rename from this... (VG_folio_alloc): ... to this. Update users. (RM_folio_free): Rename from this... (Vg_folio_free): ... to this. Update users. (RM_folio_object_alloc): Rename from this... (VG_folio_object_alloc): ... to this. Update users. (RM_folio_policy): Rename from this... (VG_folio_policy): ... to this. Update users. (RPC_STUB_PREFIX): Define to vg. (RPC_ID_PREFIX): Define to VG. * viengoos/futex.h (RM_futex): Rename from this... (VG_futex): ... to this. Update users. (RPC_STUB_PREFIX): Define to vg. (RPC_ID_PREFIX): Define to VG. * viengoos/misc.h (RM_write): Rename from this... (VG_write): ... to this. Update users. (RM_read): Rename from this... (VG_read): ... to this. Update users. (RM_as_dump): Rename from this... (VG_as_dump): ... to this. Update users. (RM_fault): Rename from this... (VG_fault): ... to this. Update users. (RPC_STUB_PREFIX): Define to vg. (RPC_ID_PREFIX): Define to VG. * viengoos/thread.h (RM_thread_exregs): Rename from this... (RM_thread_exregs): ... to this. Update users. (RM_thread_id): Rename from this... (RM_thread_id): ... to this. Update users. (RM_thread_activation_collect): Rename from this... (RM_thread_activation_collect): ... to this. Update users. (RPC_STUB_PREFIX): Define to vg. (RPC_ID_PREFIX): Define to VG.
2008-12-17Merge hurd/exceptions.h into hurd/thread.h.Neal H. Walfield
hurd/ 2008-12-17 Neal H. Walfield <neal@gnu.org> * exceptions.h: Merge contents of this file... * thread.h: ... into this one. Update users. * headers.m4: Don't link hurd/exceptions.h. * Makefile.am (includehurd_HEADERS): Remove exceptions.h. libc-parts/ 2008-12-17 Neal H. Walfield <neal@gnu.org> * backtrace.c: Don't include <hurd/exceptions.h>. libhurd-mm/ 2008-12-17 Neal H. Walfield <neal@gnu.org> * anonymous.h: Don't include <hurd/exceptions.h>. * as.h: Likewise. * exceptions.c: Likewise. * map.h: Likewise. * message-buffer.c: Likewise. * mm-init.c: Likewise. * as-build.c: Don't include <hurd/exceptions.h>. Include <viengoos/thread.h> and <viengoos/messenger.h>. * as-dump.c: Include <viengoos/thread.h> and <viengoos/messenger.h>. * as-lookup.c: Likewise. libpthread/ 2008-12-17 Neal H. Walfield <neal@gnu.org> * sysdeps/viengoos/ia32/pt-setup.c: Don't include <hurd/exceptions.h> or <viengoos/thread.h>. * sysdeps/viengoos/pt-startup.c (__pthread_startup): Don't include <l4.h> or <hurd/exceptions.h>. Include <hurd/thread.h>. (__pthread_startup): Set pthread->threadid using hurd_myself. * sysdeps/viengoos/pt-sysdep.h: Don't cinlude <hurd/exceptions.h>. Include <hurd/thread.h>. * sysdeps/viengoos/pt-thread-dealloc.c: Don't include <hurd/exceptions.h>. Include <hurd/thread.h>. * sysdeps/viengoos/pt-thread-start.c: Don't include <viengoos/thread.h> or <hurd/exceptions.h>. Include <hurd/thread.h>. libviengoos/ 2008-12-17 Neal H. Walfield <neal@gnu.org> * viengoos/misc.h: Don't include <hurd/exceptions.h>.
2008-12-17Add a "vg_" to public viengoos identifiers.Neal H. Walfield
2008-12-17 Neal H. Walfield <neal@gnu.org> * viengoos/activity.h: Add a "vg_" to public viengoos identifiers. Update users. * viengoos/addr-trans.h: Likewise. * viengoos/addr.h: Likewise. * viengoos/cap.h: Likewise. * viengoos/folio.h: Likewise. * viengoos/futex.h: Likewise. * viengoos/rpc.h: Likewise. * viengoos/thread.h: Likewise.
2008-12-17Move activation interface definitions to libviengoos.Neal H. Walfield
hurd/ 2008-12-17 Neal H. Walfield <neal@gnu.org> * exceptions.h: Don't include <viengoos/cap.h> or <l4/space.h>. Include <viengoos/addr.h>. (ACTIVATION_fault, activation_method_id_string) (struct activation_fault_info, ACTIVATION_FAULT_INFO_FMT) (ACTIVATION_FAULT_INFO_PRINTF, fault): Move from here... * ../libviengoos/viengoos/thread.h: ... to here. libhurd-mm/ 2008-12-17 Neal H. Walfield <neal@gnu.org> * ia32-exception-entry.S: Don't include <hurd/exceptions.h>. Include <hurd/stddef.h>. libviengoos/ 2008-12-17 Neal H. Walfield <neal@gnu.org> * ../hurd/exceptions.h (ACTIVATION_fault, activation_method_id_string) (struct activation_fault_info, ACTIVATION_FAULT_INFO_FMT) (ACTIVATION_FAULT_INFO_PRINTF, fault): Move from here... * viengoos/thread.h: ... to here.
2008-12-17Move viengoos header files to libviengoos.Neal H. Walfield
/ 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.
2008-12-16Remove saved_thread_state from utcb structure.Neal H. Walfield
hurd/ 2008-12-16 Neal H. Walfield <neal@gnu.org> * thread.h (struct vg_utcb): Remove field saved_thread_state. libhurd-mm/ 2008-12-16 Neal H. Walfield <neal@gnu.org> * ia32-exception-entry.S (UTCB_SAVED_THREAD_STATE): Don't define. (UTCB_ACTIVATION_FRAME_STACK): Adjust to new structure layout. viengoos/ 2008-12-16 Neal H. Walfield <neal@gnu.org> * thread.c (thread_activate): Don't update UTCB->SAVED_THREAD_STATE.
2008-12-16Make the storage low-water mark a function of the number of threads.Neal H. Walfield
2008-12-16 Neal H. Walfield <neal@gnu.org> * storage.c (num_threads): New function. (FREE_PAGES_LOW_WATER): Make it a function of the number of threads. (FREE_PAGES_SERIALIZE): Likewise.
2008-12-16Track owner of the storage descriptor. Unlock it before doing an RPC.Neal H. Walfield
2008-12-16 Neal H. Walfield <neal@gnu.org> * storage.c (struct storage_desc) [!NDEBUG]: Add field owner. (shadow_setup): Set DESC->OWNER appropriately. (storage_alloc): Likewise. (storage_free_): Likewise. (storage_init): Likewise. (storage_alloc): Move code that updates DESC to before we call rm_folio_object_alloc. Unlock DESC->LOCK before calling it.
2008-12-16Replace L4 types and functions with standard types or viengoosNeal H. Walfield
functions. hurd/ 2008-12-16 Neal H. Walfield <neal@gnu.org> * addr-trans.h: Don't include <l4/types.h>. Include <stdint.h> and <hurd/math.h>. (struct cap_addr_trans): Replace l4 types with standard types. (CAP_ADDR_TRANS_GUARD): Likewise. (CAP_ADDR_TRANS_SET_GUARD_SUBPAGE): Use vg_msb, not l4_msb. (CAP_ADDR_TRANS_VALID): Replace l4 types with standard types. Use vg_msb, not l4_msb. * t-addr.c (main): Replace use of l4_msb64 with vg_msg64 and l4_lsb64 with vg_lsg64. * types.h: Don't include <l4/types.h>. libhurd-mm/ 2008-12-16 Neal H. Walfield <neal@gnu.org> * anonymous.c (anonymous_pager_alloc): Replace use of l4_msb with vg_msb. * as-build.c (as_build): Replace use of l4_msb64 with vg_msb64. * as-dump.c (print_nr): Replace use of l4_int64_t with int64_t. * as-lookup.c (as_lookup_rel_internal): Replace use of l4_word_t with uintptr_t and l4_uint64_t with uint64_t. * as.h (as_alloc): Replace use of l4_uint64_t with uint64_t. (as_alloc_at): Likewise. (as_free): Likewise. (AS_CHECK_SHADOW): Replace use of l4_word_t with uintptr_t. (as_walk): Likewise. * as.c (struct region): Replace use of l4_uint64_t with uint64_t. (free_space_split): Likewise. (as_alloc): Likewise. (as_alloc_at): Likewise. (as_free): Likewise. (as_init): Likewise. (as_alloc_slow): Replace use of l4_word_t with uintptr_t. (as_init): Likewise. (as_walk): Likewise. (as_alloc): Replace use of l4_lsb64 with vg_lsb64. (as_init): Likewise.
2008-12-12New IPC system. Update code accordingly.Neal H. Walfield
hurd/ 2008-12-11 Neal H. Walfield <neal@gnu.org> Adapt RPC interfaces according to changes in IPC semantics. * messenger.h: New file. * message.h: New file. * ipc.h: New file. * headers.m4: Link sysroot/include/hurd/message.h to hurd/message.h, sysroot/include/hurd/messenger.h to hurd/messenger.h, and sysroot/include/hurd/ipc.h to hurd/ipc.h. * cap.h: Include <hurd/addr.h> and <stdbool.h>. (enum cap_type): Define cap_messenger, cap_rmessenger and cap_type_count. (cap_type_string): Handle cap_messenger and cap_rmessenger. (cap_types_compatible): Likewise. (cap_type_weak_p): Likewise. (cap_type_weaken): Likewise. (cap_type_strengthen): Likewise. (oid_t): Replace L4 type with standard type. (CAP_VOID): Define. * rpc.h [! RPC_TARGET]: Don't error out if not defined. [RPC_TARGET_ARG_]: Don't define or undefine. [RPC_TARGET_]: Likewise. [RPC_TARGET_NEED_ARG]: Ignore. Don't include <l4/ipc.h> or <l4/space.h>. Include <hurd/message.h> and <hurd/ipc.h>. (reply_buffer) [RM_INTERN]: Declare. (messenger_message_load) [RM_INTERN]: Likewise. [! RM_INTERN] Include <hurd/message-buffer.h>. (cap_t): Define. (CPP_FOREACH): Define. (CPP_SAFE_DEREF): Likewise. (RPC_ARGUMENTS): Take additional argument prefix. Use it. Update users. (RPC_CHOP): Rename from this... (RPC_CHOP2): ... to this. Update users. (RPC_TYPE_SHIFT): New define. (RPCLOADARG): Rewrite according to new marshalling semantics. (RPCSTOREARG): Likewise. (RPC_SEND_MARSHAL): Likewise. (RPC_SEND_UNMARSHAL): Likewise. (RPC_REPLY_MARSHAL): Likewise. (RPC_REPLY_UNMARSHAL): Likewise. (RPC_RECEIVE_MARSHAL): New define. (RPC_MARSHAL_GEN_): Break this into... (RPC_SEND_MARSHAL_GEN_): ... this... (RPC_RECEIVE_MARSHAL_GEN_): ... this... (RPC_REPLY_MARSHAL_GEN_): ... and this. Update users. (RPC_MARSHAL_GEN_): Redefine in terms of the new macros. (RPC_SEND_): Rewrite according to new marshalling and IPC semantics. (RPC_SEND_NONBLOCKING_): Define. (RPC_): Rewrite according to new marshalling and IPC semantics. (RPC_REPLY_): Likewise. (RPC_SIMPLE_): Don't define. (RPC_SIMPLE): Don't define. (RPC): Take additional argument ret_cap_count. Update users. (rpc_error_reply_marshal): Rewrite according to new marshalling and IPC semantics. (rpc_error_reply): Likewise. * t-rpc.c (RPC_TARGET_NEED_ARG): Don't define. (RPC_TARGET): Define. (RPC_noargs): Set to a large interger. (RPC_caps): New define. (noargs): Update interface specification according to new IDL interface. Update users. (onein): Likewise. (oneout): Likewise. (onlyin): Likewise. (onlyout): Likewise. (mix): Likewise. (noargs): Likewise. (onein): Likewise. (oneout): Likewise. (onlyin): Likewise. (onlyout): Likewise. (mix): New interface. (RPC_TARGET): Don't undefine. (main): Update to use the new RPC marshalling interface. Write a test using the new `mix' interface. * activity.h (RPC_TARGET_NEED_ARG): Don't undefine. (RPC_TARGET): Don't define. (activity_policy): Update interface specification according to new IDL interface. Update users. (activity_info): Likewise. * cap.h: (RPC_TARGET_NEED_ARG): Don't undefine. (RPC_TARGET): Don't define. (RM_object_slot_copy_out): Don't define. (RM_object_slot_copy_in): Likewise. (RM_object_slot_read): Likewise. (RM_object_reply_on_destruction): Define. (cap_copy): Update interface specification according to new IDL interface. Update users. (cap_rubout): Likewise. (cap_read): Likewise. (object_discarded_clear): Likewise. (object_discard): Likewise. (object_status): Likewise. (object_name): Likewise. (object_reply_on_destruction): New interface replacing thread_wait_destroy. (object_slot_copy_out): Remove interface. (object_slot_copy_in): Likewise. (object_slot_read): Likewise. (RPC_TARGET): Don't undefine. * exceptions.h: Don't include <l4/thread.h>. Include <l4/space.h>. (RPC_STUB_PREFIX): Redefine to `activation'. (RPC_ID_PREFIX EXCEPTION): Redefine to `ACTIVATION'. (RPC_TARGET_NEED_ARG): Don't define. (RPC_TARGET_ARG_TYPE): Likewise. (RPC_TARGET): Likewise. (EXCEPTION_fault): Rename from this... (ACTIVATION_fault): ... to this. Update users. (exception_method_id_string): Rename from this... (activation_method_id_string): ... to this. (struct exception_info): Rename from this... (struct activation_fault_info): ... to this. Update users. (EXCEPTION_INFO_FMT): Rename from this... (ACTIVATION_FAULT_INFO_FMT): ... to this. Update users. (EXCEPTION_INFO_PRINTF): Rename from this... (ACTIVATION_FAULT_INFO_PRINTF): ... to this. Update users. (fault): Update interface specification according to new IDL interface. Update users. * folio.h (RPC_TARGET_NEED_ARG): Don't undefine. (RPC_TARGET): Don't define. (folio_alloc): Update interface specification according to new IDL interface. Update users. (folio_free): Likewise. (folio_object_alloc): Likewise. (folio_policy): Likewise. (RPC_TARGET): Don't undefine. * futex.h (RPC_TARGET_NEED_ARG): Don't undefine. (RPC_TARGET): Don't define. (futex): Update interface specification according to new IDL interface. Update users. (RPC_TARGET): Don't undefine. (futex_using): New function. (futex): Implement in terms of it. (futex_wait_using): New function. (futex_wait): Implement in terms of it. (futex_wake_using): New function. (futex_wake): Implement in terms of it. * thread.h (RM_thread_wait_object_destroyed): Don't define. (RM_thread_raise_exception): Rename from this... (RM_thread_activation_collect): ... to this. (RM_thread_id): Define. (RPC_TARGET_NEED_ARG): Don't undefine. (RPC_TARGET): Don't define. (struct hurd_thread_exregs_in): Remove fields aspace, activity, exception_page, aspace_out, activity_out and exception_page_out. (thread_exregs): Update interface specification according to new IDL interface. Add additional parameters exception_messenger and exception_messenger_out. Update users. (thread_wait_object_destroyed): Remove interface. (struct exception_buffer): Don't define. (thread_raise_exception): Remove interface. (thread_id): New interface. (thread_activation_collect): Likewise. (RPC_TARGET): Don't undefine. * RPC: Update. * exceptions.h (hurd_activation_handler_init_early): New declaration. (hurd_activation_handler_init): Likewise. (hurd_utcb): Likewise. (EXCEPTION_STACK_SIZE_LOG2): Don't define. (EXCEPTION_STACK_SIZE): Likewise. (hurd_activation_state_alloc): New declaration. (exception_page_cleanup): Rename from this... (hurd_activation_state_free): ... to this. Update users. (exception_handler_activated): Rename from this... (hurd_activation_handler_activated): ... to this. (exception_handler_normal): Rename from this... (hurd_activation_handler_normal): ... to this. Update users. Take additional parameter utcb. (exception_handler_entry): Rename from this... (hurd_activation_handler_entry): ... to this. (exception_handler_end): Rename from this... (hurd_activation_handler_end): ... to this. (hurd_activation_message_register): New declaration. (hurd_activation_message_unregister): Likewise. (hurd_activation_stack_dump): Likewise. * thread.h [! __have_vg_thread_id_t] (__have_vg_thread_id_t): Define. [! __have_vg_thread_id_t && USE_L4]: Include <l4.h>. [! __have_vg_thread_id_t && !USE_L4]: Include <stdint.h>. [! __have_vg_thread_id_t] (vg_thread_id_t): Define. [! __have_vg_thread_id_t] (vg_niltid): Define. [! __have_vg_thread_id_t] (VG_THREAD_ID_FMT): Define. [! __have_activation_frame] (__have_activation_frame): Define. [! __have_activation_frame && USE_L4]: Include <l4/ipc.h>. [! __have_activation_frame] (struct hurd_message_buffer): Declare. [! __have_activation_frame] (struct activation_frame): Define in this case. Add fields normal_mode_stack and canary. [! __have_activation_frame && i386] (struct activation_frame): Change regs to have 10 elements. Add fields eax, ecx, edx, eflags, eip, ebx, edi, esi, ebp and esp. [! __have_activation_frame && !USE_L4] (struct activation_frame): Remove fields saved_sender, saved_receiver, saved_timeout, saved_error_code, saved_flags, and saved_br0 in this case. [__need_vg_thread_id_t || __need_activation_frame] (__need_vg_thread_id_t): Undefine. [__need_vg_thread_id_t || __need_activation_frame] (__need_activation_frame): Likewise. [!__need_vg_thread_id_t && !__need_activation_frame]: Include the rest of the file in this case. Include <stdint.h>, <hurd/types.h>, <hurd/addr.h>, <hurd/addr-trans.h>, <hurd/cap.h>, <hurd/messenger.h> and <setjmp.h>. (hurd_activation_frame_longjmp): New declaration. (struct hurd_fault_catcher): New definition. (hurd_fault_catcher_register): New declaration. (hurd_fault_catcher_unregister): Likewise. (struct exception_page): Rename from this... (struct vg_utcb): ... to this. Update users. Remove field exception. Add fields protected_payload, messenger_id, inline_words, inline_caps, inline_word_count, inline_cap_count, inline_data, exception_buffer, extant_messages, catchers, alternate_stack, alternate_stack_inuse, canary0, canary1. (UTCB_CANARY0): Define. (UTCB_CANARY1): Likewise. (THREAD_EXCEPTION_PAGE_SLOT): Rename from this... (THREAD_UTCB): ... to this. (THREAD_EXCEPTION_MESSENGER): Define. (THREAD_SLOTS): Likewise. (THREAD_SLOTS_LOG2): Likewise. (HURD_EXREGS_SET_EXCEPTION_PAGE): Rename from this... (HURD_EXREGS_SET_UTCB): ... to this. Update users. (HURD_EXREGS_SET_EXCEPTION_MESSENGER): Define. (HURD_EXREGS_SET_REGS): Add HURD_EXREGS_SET_EXCEPTION_MESSENGER. (vg_myself): New function. * startup.h (struct hurd_startup_data): Add field messengers. viengoos/ 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. libhurd-mm/ 2008-12-12 Neal H. Walfield <neal@gnu.org> Update to new RPC interface and IPC semantics. Support messengers. * message-buffer.h: New file. * message-buffer.c: Likewise. * Makefile.am (libhurd_mm_a_SOURCES): Add message-buffer.h and message-buffer.c. * headers.m4: Link sysroot/include/hurd/message-buffer.h to libhurd-mm/message-buffer.h. * exceptions.c: Include <hurd/mm.h>, <hurd/rm.h> and <backtrace.h>. (hurd_fault_catcher_register): New function. (hurd_fault_catcher_unregister): Likewise. (hurd_activation_frame_longjmp): Likewise. (utcb_state_save): Rename from this... (l4_utcb_state_save): ... to this. Take a `struct activation_frame *', not a `struct exception_frame *'. (utcb_state_restore): Rename from this... (l4_utcb_state_restore): ... to this. Take a `struct activation_frame *', not a `struct exception_frame *'. (exception_fetch_exception): Rename from this... (hurd_activation_fetch): ... to this. (hurd_activation_message_register): New function. (hurd_activation_frame_longjmp): Likewise. (exception_frame_slab): Rename from this... (activation_frame_slab): ... to this. Use a static initializer. (exception_frame_slab_alloc): Rename from this... (activation_frame_slab_alloc): ... to this. Don't preserve the L4 utcb. (exception_frame_slab_dealloc): Rename from this... (activation_frame_slab_dealloc): ... to this. (exception_frame_alloc): Rename from this... (activation_frame_alloc): ... to this. If there are no preallocated frames, panic. Move the hard allocation code to... (check_activation_frame_reserve): ... this new function. (hurd_activation_stack_dump): New function. (hurd_activation_handler_normal): Take an additional parameter, the utcb. Add consistency checks. Handle IPC and closures. Update fault handling code to use the new fault interface. If unable to resolve the fault via the pager mechanism, see if a fault catcher in installed. Check the UTCB's canary. If running on the alternate stack, clear UTCB->ALTERNATE_STACK_INUSE on exit. (hurd_activation_handler_activated): Take a `struct vg_utcb *', not a `struct exception_page *'. Handle IPC and closures. Improve test to determine if the fault was a stack fault. If so, return to normal mode to handle the fault and use an alternate stack. (activation_handler_area0): New local variable. (activation_handler_msg): Likewise. (initial_utcb): Likewise. (simple_utcb_fetcher): New function. (hurd_utcb): New variable. (hurd_activation_handler_init_early): New function. (hurd_activation_handler_init): Likewise. (exception_handler_init): Remove function. (ACTIVATION_AREA_SIZE_LOG2): Define. (ACTIVATION_AREA_SIZE): Likewise. (hurd_activation_state_alloc): New function. (exception_page_cleanup): Rename from this... (hurd_activation_state_free): ... to this. Rewrite. * ia32-exception-entry.S (_hurd_activation_handler_entry): Save the eflags before executing a sub instruction. Don't try to smartly calculate the location of the UTCB. Instead, just reload it. (activation_frame_run): Use an alternate stack, if requested. Save ebx and ebi. Pass the utcb to the callback. * mm-init.c [i386]: Include <hurd/pager.h>. Include <backtrace.h>. (mm_init): Call hurd_activation_handler_init_early and hurd_activation_handler_init. Don't call exception_handler_init. (mm_init) [! NDEBUG && i386]: Test the activation code. * as-build.c (do_index): Handle indexing a cap_thread or a cap_messenger. (as_build): Likewise. * as-dump.c (do_walk): Handle indexing a cap_thread or a cap_messenger. * as-lookup.c (as_lookup_rel_internal): Likewise. * as.c (as_walk): Likewise. * storage.c: Include <backtrace.h>. (shadow_setup): Update use of rm_folio_object_alloc according to its new interface. (storage_check_reserve_internal): Likewise. (storage_free_): Likewise. (FREE_PAGES_SERIALIZE): Bump to 32. (storage_alloc): If we try to get storage more than 5 lives, print a warning that we may be experiencing live lock. * pager.h (pager_fault_t): Change info's type from `struct exception_info' to `struct activation_fault_info'. (PAGER_VOID): Define. * map.h: Don't include <hurd/exceptions.h>. Include <hurd/as.h>. (maps_lock_lock): Don't use EXCEPTION_STACK_SIZE but AS_STACK_SPACE. (map_fault): Change info's type from `struct exception_info' to `struct activation_fault_info'. * map.c (map_fault): Change info's type from `struct exception_info' to `struct activation_fault_info'. * as.h (AS_STACK_SPACE): Define. (as_lock): Use AS_STACK_SPACE instead of EXCEPTION_STACK_SIZE. (as_lock_readonly): Likewise. * as.h (AS_CHECK_SHADOW): Only check the address translator for capabilities that designate cappages. * anonymous.h (ANONYMOUS_MAGIC): Define. (struct anonymous_pager): Add field magic. * anonymous.c (fault): Assert that ANON->MAGIC has the expected value. Correctly size PAGES. (mdestroy): Assert that ANON->MAGIC has the expected value. (destroy): Likewise. (advise): Likewise. (anonymous_pager_alloc): Initialize ANON->MAGIC. benchmarks/ 2008-12-12 Neal H. Walfield <neal@gnu.org> Update according to new RPC interfaces. * activity-distribution.c (main): Update use of rm_activity_policy and rm_activity_info to be consistent with the new interface. Replace use of `struct exception_info' with `struct activation_fault_info'. * cache.c (helper): Update use of rm_activity_policy and rm_activity_info to be consistent with the new interface. * shared-memory-distribution.c (main): Likewise. hieronymus/ 2008-12-12 Neal H. Walfield <neal@gnu.org> Update according to new RPC interfaces. * hieronymus.c (activity_alloc): Update use of rm_activity_policy, rm_activity_info and rm_folio_object_alloc to be consistent with new interface. Replace use of rm_thread_wait_object_destroyed with rm_object_reply_on_destruction. libc-parts/ 2008-12-11 Neal H. Walfield <neal@gnu.org> Update to new RPC interfaces. * _exit.c (_exit): Update use of rm_folio_object_alloc to be consistent with the new interface. * backtrace.c (RA) [!RM_INTERN]: Set up a fault catch handler to avoid gratuitously faulting. (backtrace) [!RM_INTERN]: Set up a jump buffer. Jump to it on a fault. (backtrace_print): Use s_printf, not printf. * ia32-crt0.S (STACK_SIZE): Increase to 128 kb. * process-spawn.c (process_spawn): Don't use a capability slot to identify the root of the new thread's address space, allocate a thread object. Allocate messengers for the new thread and save them in STARTUP_DATA->MESSENGERS. * s_printf.c (io_buffer_flush): Use the debug output interface. (s_putchar): Don't call rm_write but use io_buffer_flush. libpthread/ 2008-12-11 Neal H. Walfield <neal@gnu.org> Update to new RPC interfaces, IPC semantics. * sysdeps/viengoos/bits/pthread-np.h: Include <hurd/exceptions.h>. (pthread_hurd_utcb_np): New declaration. * sysdeps/viengoos/pt-hurd-utcb-np.c: New file. * Makefile.am (libpthread_a_SOURCES): Add pt-hurd-utcb.c. * sysdeps/viengoos/pt-sysdep.h (EXCEPTION_AREA_SIZE): Don't define. (EXCEPTION_AREA_SIZE_LOG2): Likewise. (EXCEPTION_PAGE): Likewise. (PTHREAD_SYSDEP_MEMBERS): Remove fields exception_area, and exception_area_va. Add fields utcb and lock_message_buffer. * sysdeps/viengoos/pt-thread-alloc.c: Include <hurd/message-buffer.h>. (__pthread_thread_alloc): Initialize thread->lock_message_buffer. When executed the first time, set the thread's L4 user-defined handler. Initialize THREAD->UTCB with the thread's current utcb. Set HURD_UTCB to PTHREAD_HURD_UTCB_NP. For subsequent threads, don't manually set up the activation area. Instead, call hurd_activation_state_alloc. * sysdeps/viengoos/pt-thread-dealloc.c: Include <hurd/message-buffer.h>. (__pthread_thread_dealloc): Call __pthread_thread_halt. Don't manually clean up the activation area. Instead, call hurd_activation_state_free. Free THREAD->LOCK_MESSAGE_BUFFER. * sysdeps/viengoos/ia32/pt-setup.c (stack_setup): Pre-fault the first four pages of the new stack. (__pthread_setup): Don't set up the activation area. * sysdeps/viengoos/pt-wakeup.c (__pthread_wakeup): Use futex_wake_using with the calling thread's lock messenger. * sysdeps/viengoos/pt-block.c (__pthread_block): Use futex_wait_using and provide THREAD->LOCK_MESSAGE_BUFFER as the message buffer. * sysdeps/viengoos/pt-thread-start.c (__pthread_thread_start): Don't set the first thread's L4 user-defined handler here. (__pthread_thread_start): Update use of rm_thread_exregs according to be consistent with new interface. * sysdeps/viengoos/pt-thread-halt.c (__pthread_thread_halt): If THREAD is the current thread, call vg_suspend. * sysdeps/viengoos/pt-setactivity-np.c (pthread_setactivity_np): Update use of rm_thread_exregs according to be consistent with new interface. * sysdeps/viengoos/ia32/signal-dispatch-lowlevel.c (signal_dispatch_lowlevel): Use __builtin_frame_address to get the current stack frame's start. Update use of rm_thread_exregs according to be consistent with new interface. ruth/ 2008-12-12 Neal H. Walfield <neal@gnu.org> Update to new RPC interfaces. * ruth.c (main): Update use of rm_folio_alloc, rm_folio_object_alloc, rm_thread_exregs, rm_activity_policy, rm_activity_info. Replace use of rm_thread_wait_object_destroy with rm_object_reply_on_destruction. Replace use of `struct exception_info' with `struct activation_fault_info'. Fix signal test's use of condition variables to not rely on the scheduler. When checking deallocation code, set up a fault handler to programmatically determine success.
2008-12-04Use correct format conversions.Neal H. Walfield
2008-12-04 Neal H. Walfield <neal@gnu.org> * mmap.c (mmap): Use correct format conversions.
2008-12-04Use the correct format modifiers and print the correct values in madvise.c.Neal H. Walfield
2008-12-04 Neal H. Walfield <neal@gnu.org> * madvise.c (madvise): Use the correct format modifiers. Print the correct values.
2008-11-18Improve as_dump output.Neal H. Walfield
2008-11-18 Neal H. Walfield <neal@gnu.org> * as-dump.c (do_walk): Don't print the prefix if it is the empty string. (as_dump_from): Print a backtrace. Don't actually dump the address space by default.
2008-11-18Add support for prefaulting pages.Neal H. Walfield
viengoos/ 2008-11-18 Neal H. Walfield <neal@gnu.org> * rm.h (RM_fault): Define. (rm_method_id_string): Handle it. (fault): New RPC. * server.c (server_loop): Implement it. libhurd-mm/ 2008-11-18 Neal H. Walfield <neal@gnu.org> * anonymous.c (fault): Add code to prefault the pages. Leave disabled.
2008-11-18For normal memory advice, set INFO.DISCARDED to ANON->POLICY.DISCARDABLE.Neal H. Walfield
2008-11-18 Neal H. Walfield <neal@gnu.org> * anonymous.c (advise): When ADVICE is pager_advice_normal, set INFO.DISCARDED to ANON->POLICY.DISCARDABLE.
2008-11-18Preallocate the pages around a fault.Neal H. Walfield
2008-11-18 Neal H. Walfield <neal@gnu.org> * anonymous.c (fault): Preallocate the pages around a fault. Only copy the capability in place if we just allocated the storage.
2008-11-18Fix logic error in as_lookup code.Neal H. Walfield
2008-11-17 Neal H. Walfield <neal@gnu.org> * as-lookup.c (DUMP_OR_RET) [NDEBUG]: Just return. (as_lookup_rel_internal) [NDEBUG]: Define dump_path to be false.
2008-11-12Make the anonymous pager's fault handler and madvise reentrant.Neal H. Walfield
2008-11-12 Neal H. Walfield <neal@gnu.org> * anonymous.h (struct anonymous_pager): Improve documentation for the fill_lock field. * anonymous.c (fault): Drop ANON->LOCK before calling the user's fill function. (destroy): Before destroying ANON, take ANON->FILL_LOCK. * madvise.c (madvise): Refactor to not hold map lock when calling MAP->PAGER->ADVISE.
2008-11-11Add debugging output when passing bad arguments to madvise.Neal H. Walfield
2008-11-11 Neal H. Walfield <neal@gnu.org> * madvise.c (madvise): Add debugging output for bad arguments.
2008-11-11Profile the anonymous pager's fault handler.Neal H. Walfield
2008-11-11 Neal H. Walfield <neal@gnu.org> * anonymous.c: Include <profile.h>. (fault): Profile.
2008-11-06Support clearing the discarded status and prefaulting using madvise.Neal H. Walfield
2008-11-06 Neal H. Walfield <neal@gnu.org> * anonymous.c (fault): Handle the case where COUNT > 0. Don't assume that storage has been allocated if INFO.DISCARDED is true. (advise): Interpret pager_advice_normal to mean to cleared discarded pages and to allocate unallocated pages.
2008-11-03Remove .cvsignore files. Add a .gitignore file.Neal H. Walfield
2008-11-03Update to binutils 2.19.Neal H. Walfield
/ 2008-11-03 Neal H. Walfield <neal@gnu.org> * Makefile.am (libc-stmp): Don't create an empty sysroot/lib/libc.a. binutils/ 2008-11-03 Neal H. Walfield <neal@gnu.org> * Makefrag.am (binutils_version): Bump to 2.19. libc-parts/ 2008-11-03 Neal H. Walfield <neal@gnu.org> * headers.m4: Don't create an empty libc-parts/libc-parts.a. libhurd-btree/ 2008-11-03 Neal H. Walfield <neal@gnu.org> * headers.m4: Don't create an empty libhurd-btree/libhurd-btree.alibhurd-btree/libhurd-btree.a. libhurd-ihash/ 2008-11-03 Neal H. Walfield <neal@gnu.org> * headers.m4: Don't create an empty libhurd-ihash/libhurd-ihash.a. libhurd-mm 2008-11-03 Neal H. Walfield <neal@gnu.org> * headers.m4: Don't create an empty libhurd-mm/libhurd-mm.a. libhurd-slab/ 2008-11-03 Neal H. Walfield <neal@gnu.org> * headers.m4: Don't create an empty libhurd-slab/libhurd-slab.a. libpthread/ 2008-11-03 Neal H. Walfield <neal@gnu.org> * headers.m4: Don't create an empty libpthread/libpthread.a. newlib/ 2008-11-03 Neal H. Walfield <neal@gnu.org> * headers.m4: Don't create an empty newlib/libc.a or an empty newlib/libm.a. viengoos/ 2008-11-03 Neal H. Walfield <neal@gnu.org> * headers.m4: Don't create an empty viengoos/libhurd-cap.a.
2008-08-152008-08-15 Neal H. Walfield <neal@gnu.org>neal
* storage.c (storage_free_): Deallocate the folio before updating the shadow capability.
2008-08-12libpthread/neal
2008-08-12 Neal H. Walfield <neal@gnu.org> * sysdeps/generic/bits/mutex.h (__PTHREAD_RECURSIVE_MUTEX_INITIALIZER): Define. (__PTHREAD_MUTEX_RECURSIVE_INITIALIZER): Don't define. * include/pthread/pthread.h (PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) [__USE_GNU]: Define. (PTHREAD_MUTEX_RECURSIVE_INITIALIZER_NP): Don't define. libhurd-mm/ 2008-08-12 Neal H. Walfield <neal@gnu.org> * storage.c (storage_low_mutex): Use PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP, not PTHREAD_MUTEX_RECURSIVE_INITIALIZER_NP.
2008-07-082008-07-08 Neal H. Walfield <neal@gnu.org>neal
* as-lookup.c: Include <profile.h>, not "../viengoos/profile.h".
2008-07-042008-07-04 Neal H. Walfield <neal@gnu.org>neal
* as-lookup.c: Don't include <pthread.h>. (as_rwlock): Don't define here. * as.c: Include <pthread.h>. (as_rwlock): Define. (as_rwlock_owner): Likewise. * as.h: Include <l4/types.h>. (as_lock): Check and set as_rwlock_owner appropriately. (as_lock_readonly): Likewise. (as_unlock): Likewise. * storage.c (do_serialize): New local variable. (storage_check_reserve_internal): If AS_RWLOCK_OWNER is non-zero, check if the caller has the AS_RWLOCK. If so, return. If DO_SERIALIZE is set or FREE_COUNT is less than FREE_PAGES_SERIALIZE, take the STORAGE_LOW_MUTEX. If DO_SERIALIZE was not set, set it and remember that we set it and clear it after allocating a folio.
2008-07-012008-07-01 Neal H. Walfield <neal@gnu.org>neal
* as-dump.c [RM_INTERN]: Include <md5.h>, "../viengoos/cap.h" and "../viengoos/activity.h". (do_walk) [RM_INTERN]: Print data pages' md5 sums as well.
2008-06-27Add .cvsignore files.neal
2008-06-24hurd/neal
2008-06-24 Neal H. Walfield <neal@gnu.org> * cap.h (RM_object_discard): New define. (object_discard): New method. viengoos/ 2008-06-24 Neal H. Walfield <neal@gnu.org> * server.c (server_loop): Implement cap_discard. * rm.h (rm_method_id_string): Handle the RM_object_discard case. libhurd-mm/ 2008-06-24 Neal H. Walfield <neal@gnu.org> * madvise.c: New file. * Makefile.am (libhurd_mm_a_SOURCES): Add madvise.c. * pager.h (pager_advice_normal, pager_advice_random, pager_advice_sequential, pager_advice_willneed, pager_advice_dontneed): Define. (pager_advise_t): New typedef. (struct pager): Add field advise. * anonymous.c (advise): New function. (anonymous_pager_alloc): Set ANON->PAGER.ADVISE to it.
2008-06-23hurd/neal
2008-06-23 Neal H. Walfield <neal@gnu.org> * stddef.h (panic_): Use gcc's format attribute. libc-parts/ 2008-06-23 Neal H. Walfield <neal@gnu.org> * s-printf.h (s_printf): Use gcc's format attribute. libhurd-mm/ 2008-06-23 Neal H. Walfield <neal@gnu.org> * as-build.c (as_build): Use %p, not %x, for printing a pointer. When printing addresses, be sure to wrap them in ADDR_PRINTF. Remove a gratuitous ADDR_FMT.
2008-06-232008-06-23 Neal H. Walfield <neal@gnu.org>neal
* pager.c (pager_deinit): Drop PAGER->LOCK before calling MAP_DESTROY.
2008-06-222008-06-22 Neal H. Walfield <neal@gnu.org>neal
* mprotect.c (mprotect): Tweak debugging output.
2008-06-222008-06-22 Neal H. Walfield <neal@gnu.org>neal
* anonymous.c (mdestroy) [! NDEBUG]: Don't void capability slots, we destroy the associated objects, which does that.
2008-06-202008-06-20 Neal H. Walfield <neal@gnu.org>neal
* as-lookup.c (as_dump_path_rel): Don't return anything.
2008-06-20viengoos/neal
2008-06-20 Neal H. Walfield <neal@gnu.org> * profile.c: New file. * profile.h: Likewise. * Makefile.am (viengoos_SOURCES): Add profile.h and profile.c. * server.c: Include "profile.h". (PAGEFAULT_METHOD): Define. (server_loop): Add profiling code. libhurd-mm/ 2008-06-20 Neal H. Walfield <neal@gnu.org> * as-lookup.c [RM_INTERN]: Include "../viengoos/profile.h". (as_lookup_rel): Instrument.