2008-12-29 Samuel Thibault * manage-multithread.c (ports_manage_port_operations_multithread): Drop reset of thread_timeout and global_timeout to 0. 2004-11-03 Ognyan Kulev * resume-all-rpcs.c (ports_resume_all_rpcs): Fix check for block condition. * resume-bucket-rpcs.c (ports_resume_bucket_rpcs): Likewise. * resume-class-rpcs.c (ports_resume_class_rpcs): Likewise. * resume-port-rpcs.c (ports_resume_port_rpcs): Likewise. 2003-08-17 Marcus Brinkmann * ports.h (struct port_bucket): Change type of HTABLE to struct hurd_ihash. (struct port_info): Change type of HENTRY to hurd_ihash_locp_t. * lookup-port.c (ports_lookup_port): Use hurd_ihash_find instead ihash_find. * bucket-iterate.c (_ports_bucket_class_iterate): Use HURD_IHASH_ITERATE instead ihash_iterate. * inhibit-all-rpcs.c (ports_inhibit_all_rpcs): Likewise. * inhibit-bucket-rpcs.c (ports_inhibit_bucket_rpcs): Likewise. * create-internal.c (_ports_create_port_internal): Use hurd_ihash_add instead ihash_add. * import-port.c (ports_import_port): Likewise. * reallocate-from-external.c (ports_reallocate_from_external): Likewise. * reallocate-port.c (ports_reallocate_port): Likewise. * transfer-right.c (ports_transfer_right): Likewise. * create-bucket.c: Include . (ports_create_bucket): Use hurd_ihash_init instead hurd_ihash_create. * class-iterate.c: Do not include . * claim-right.c (ports_claim_right): Call hurd_ihash_locp_remove instead ihash_locp_remove. * complete-deallocate.c (_ports_complete_deallocate): Likewise. * destroy-right.c (ports_destroy_right): Likewise. * reallocate-from-external.c (ports_reallocate_from_external): Likewise. * reallocate-port.c (ports_reallocate_port): Likewise. * transfer-right.c (ports_transfer_right): Likewise. 2001-03-29 Neal H Walfield * claim-right.c (ports_claim_right): Include errno.h and assert.h. Add assertions. Clean up the logic. * create-bucket.c (ports_create_bucket): Include errno.h and stdlib.h. Do not include assert.h. Turn assertions into errors that set errno and return NULL. * create-class.c (ports_create_class): Likewise. * create-internal.c (_ports_create_internal): On error, do not deallocate a send right, but a receive right. * init.c: Do not initialize global variables to 0. * interrupt-notified-rpcs.c: Likewise. * port-deref.c (ports_port_deref): Simplify logic. * reallocate-port.c (ports_reallocate_port): Assert return from mach_port_move_member. * transfer-right.c (ports_transfer_right): Likewise. 2001-03-26 Roland McGrath * intern-external-port.c, allocate-port.c: Dead files removed from cvs. Reported by Neal H Walfield . 2000-07-25 Mark Kettenis * inhibit-all-rpcs.c (ports_inhibit_all_rpcs): Avoid calling hurd_thread_cancel on the current thread. * inhibit-class-rpcs.c (ports_inhibit_class_rpcs): Likewise. * inhibit-bucket-rpcs.c (ports_inhibit_bucket_rpcs): Likewise. * inhibit-port-rpcs.c (ports_inhibit_port_rpcs): Likewise. 2000-03-17 Roland McGrath * get-send-right.c: New file. * ports.h: Declare ports_get_send_right. * Makefile (SRCS): Add get-send-right.c. * get-right.c (gdb_loses): Remove global variable. (ports_get_right): Use a local instead. Sat Mar 6 17:05:45 1999 Thomas Bushnell, BSG * notify-dead-name.c (ports_do_mach_notify_dead_name): Deallocate newly created reference to DEAD_NAME. 1999-02-28 Roland McGrath * destroy-right.c (ports_destroy_right): Return error_t (always 0). * ports.h: Update decl. * bucket-iterate.c (_ports_bucket_class_iterate): New function, transmorgified from ports_bucket_iterate. (ports_bucket_iterate): Now just call that to do the work. * class-iterate.c: New file. (ports_class_iterate): New function. * ports.h: Declare ports_class_iterate and _ports_bucket_class_iterate. * Makefile (SRCS): Add class-iterate.c. Thu Feb 25 10:31:57 1999 Thomas Bushnell, BSG * end-rpc.c (ports_end_rpc): Signal ports_block anytime an rpc ends and someone is waiting on an inhibition. 1999-01-01 Roland McGrath * interrupt-on-notify.c (ports_interrupt_self_on_notification): Use assert to check we are in an rpc; don't return EIEIO (not appropriate). 1997-08-14 Miles Bader * interrupt-rpcs.c (ports_interrupt_rpcs): Put RPC into the interrupted list. * end-rpc.c (ports_end_rpc): Call ports_self_interrupted to remove the current thread from the interrupted list. * ports.h (ports_self_interrupted): New declaration. (struct rpc_info): Add interrupted_next field. * Makefile (SRCS): Add interrupted.c. Wed Aug 20 13:56:40 1997 Thomas Bushnell, n/BSG * manage-multithread.c (ports_manage_port_operations_multithread): Drop parms `wire_cthreads' and `wire_threads'. Add parm `hook'. (thread_function): Call HOOK instead of cthread_wire and/or thread_wire. * ports.h (ports_manage_port_operations_multithread): Adjust declaration. Fri Feb 14 00:51:32 1997 Miles Bader * create-bucket.c (ports_create_bucket): Initialize rpcs, flags, & count fields in RET. Thu Sep 12 16:19:35 1996 Thomas Bushnell, n/BSG * Makefile (HURDLIBS): New variable. (libports.so): Delete special depedency. Wed Aug 7 15:28:48 1996 Thomas Bushnell, n/BSG * ports.h (_ports_create_port_internal, ports_create_port_noinstall): New declarations. Thu Jul 18 22:59:14 1996 Michael I. Bushnell, p/BSG * Makefile (SRCS): Add create-port-noinstall.c and create-internal.c. * create-port-noinstall.c: New file. * create-port.c (ports_create_port): Guts deleted; call new work function. * create-internal.c: New file; all the guts from create-port.c. Wed Jul 3 14:13:53 1996 Michael I. Bushnell, p/BSG * get-right.c (ports_get_right): Supply correct sync value in notification request. Mon May 6 16:33:55 1996 Michael I. Bushnell, p/BSG * ports.h (ports_allocate_port, ports_intern_external_port): Delete obsolete declarations. * allocate-port.c, intern-external-port.c: Delete files. * Makefile (SRCS): Delete `intern-external-port.c' and `allocate-port.c'. Sun Apr 28 15:22:58 1996 Roland McGrath * allocate-port.c: Add obsolescence link warning. * intern-external-port.c: Add obsolescence link warning. Fri Mar 29 15:21:31 1996 Miles Bader * end-rpc.c (ports_end_rpc): Acquire _PORTS_LOCK before calling _ports_remove_notified_rpc. Fri Mar 29 09:04:53 1996 Michael I. Bushnell, p/BSG * reallocate-from-external.c (ports_reallocate_from_external): Require port to have a current port right. * reallocate-port.c (ports_reallocate_port): Likewise. * complete-deallocate.c (_ports_complete_deallocate): Only drop port right if it isn't already null. * transfer-right.c: New file. * Makefile (SRCS): Add transfer-right.c. * ports.h (ports_claim_right): Doc fix. (ports_transfer_right): New function. Thu Mar 28 10:47:58 1996 Michael I. Bushnell, p/BSG * claim-right.c (ports_claim_right): Take right out of port bucket. * manage-multithread.c (ports_manage_port_operations_multithread): Fill in meaningful statuses and errors rather than just zero. * manage-one-thread.c (ports_manage_port_operations_one_thread): Likewise. * begin-rpc.c (ports_begin_rpc): Return EOPNOTSUPP, not EDIED, if receive right is gone. * manage-one-thread.c (ports_manage_port_operations_one_thread): Fill in default reply before doing work; we might return 0 and mach_msg_server expects us to fill in a reply decently no matter what. (ports_manage_port_operations_multithread): Likewise. * claim-right.c (ports_claim_right): Hold lock until sendright frobbing is finished. Wed Mar 20 13:32:13 1996 Michael I. Bushnell, p/BSG * destroy-right.c (ports_destroy_right): Don't do anything if port has already been destroyed. * ports.h (ports_claim_right): New declaration. * claim-right.c: New file. * Makefile (SRCS): Add `claim-right.c'. Tue Mar 5 17:28:54 1996 Miles Bader * get-right.c (ports_get_right): Check mach_port_request_notification for error returns, against all odds. Mon Feb 26 17:10:38 1996 Miles Bader * interrupt-on-notify.c (ports_interrupt_rpc_on_notification): Only set _PORTS_NOTIFICATIONS->prevp if _PORTS_NOTIFICATIONS != 0. Likewise for PN->prev_req_p. Fri Jan 26 00:45:58 1996 Miles Bader * inhibit-class-rpcs.c (ports_inhibit_class_rpcs): Whoops, we still have the lock when hurd_condition_wait gets cancelled. * import-port.c (ports_import_port): Likewise. * create-port.c (ports_create_port): Likewise. * inhibit-bucket-rpcs.c (ports_inhibit_bucket_rpcs): Likewise. * inhibit-all-rpcs.c (ports_inhibit_all_rpcs): Likewise. * inhibit-port-rpcs.c (ports_inhibit_port_rpcs): Likewise. * import-port.c (ports_import_port): Don't lose a send right on PORT when we return an error. * create-port.c (ports_create_port): Delete the receive right, not the send right when we return an error. Thu Jan 25 12:10:48 1996 Miles Bader * manage-multithread.c (ports_manage_port_operations_multithread): Pass INP->msgh_id, not INP to ports_begin_rpc. * manage-one-thread.c (ports_manage_port_operations_one_thread): Ditto. Wed Jan 24 14:02:30 1996 Miles Bader * inhibit-all-rpcs.c (ports_inhibit_all_rpcs): Be interruptable; return EINTR if interrupted, or EBUSY if already inhibited. * inhibit-class-rpcs.c (ports_inhibit_class_rpcs): Likewise. * inhibit-port-rpcs.c (ports_inhibit_port_rpcs): Likewise. * inhibit-bucket-rpcs.c (ports_inhibit_bucket_rpcs): Likewise. * begin-rpc.c (ports_begin_rpc): Be interruptable. * create-port.c (ports_create_port): New function. * import-port.c (ports_import_port): New function. * allocate-port.c (ports_allocate_port): Call ports_create_port. * intern-external-port.c (ports_intern_external_port): Call ports_import_port. * ports.h (ports_create_port, ports_import_ports): New declarations. (PORTS_INHIBITED, PORTS_BLOCKED, PORTS_INHIBIT_WAIT, PORTS_NO_ALLOC, PORTS_ALLOC_WAIT): New macros (global values for common flags). (PORT_BLOCKED, PORT_INHIBITED, PORT_INHIBIT_WAIT, PORT_BUCKET_INHIBITED, PORT_BUCKET_BLOCKED, PORT_BUCKET_INHIBIT_WAIT, PORT_BUCKET_NO_ALLOC, PORT_BUCKET_ALLOC_WAIT, PORT_CLASS_INHIBITED, PORT_CLASS_BLOCKED, PORT_CLASS_INHIBIT_WAIT, PORT_CLASS_NO_ALLOC, PORT_CLASS_ALLOC_WAIT, _PORTS_INHIBITED, _PORTS_BLOCKED, _PORTS_INHIBIT_WAIT): Redefine using global flag values. (ports_inhibit_port_rpcs, ports_inhibit_all_rpcs, ports_inhibit_class_rpcs, ports_inhibit_bucket_rpcs): Return error_t. (ports_interupt_rpcs): Renamed from port_interrupt_rpc. * begin-rpc.c (ports_begin_rpc): Take new MSG_ID arg, and use it to see if the particular rpc shouldn't be inhibitable. * manage-multithread.c (ports_manage_port_operations_multithread): Pass INP to ports_begin_rpc, and only call DEMUXER if it returns 0. * manage-one-thread.c (ports_manage_port_operations_one_thread): Ditto. * ports.h (ports_begin_rpc): Add MSG_ID arg. (struct port_class): Add uninhibitable_rpcs field. (struct ports_msg_id_range): New structure. (ports_default_uninhibitable_rpcs): New declaration. * create-class.c (ports_create_class): Initialize the uninhibitable_rpcs field. * default-uninhibitable-rpcs.c (interrupt_operation_ids, ports_default_uninhibitable_rpcs): New variables. * Makefile (SRCS): Add default-uninhibitable-rpcs.c. * interrupt-rpcs.c (ports_interrupt_rpcs): Renamed from ports_interrupt_rpc. * Makefile (SRCS): Rename interrupt-rpc.c to interrupt-rpcs.c. * interrupt-operation.c (ports_S_interrupt_operation): Use ports_interrupt_rpcs instead of ports_interrupt_rpc. * no-senders.c (ports_no_senders): Likewise. * manage-multithread.c (ports_manage_port_operations_multithread): Fix spelling of cancel_threshold (was cancel_threshhold). * interrupt-operation.c (ports_S_interrupt_operation): Likewise. * ports.h (struct port_info): Likewise. * reallocate-from-external.c (ports_reallocate_from_external): Ditto. * reallocate-port.c (ports_reallocate_port): Likewise. Wed Jan 17 13:08:49 1996 Miles Bader * no-senders.c (ports_no_senders): Interrupt RPCs on PI too. Only do the ports_interrupt_notified_rpcs() if we're actually losing a ref. Fri Jan 5 16:40:34 1996 Miles Bader * interrupt-on-notify.c (ports_interrupt_rpc_on_notification): If PORT is dead or bogus, interrupt RPC immediately, and don't add a new request. Thu Dec 28 14:27:41 1995 Roland McGrath * interrupt-on-notify.c (ports_interrupt_rpc_on_notification): If NEW_REQ is not needed, put it on the free list, don't call free on it. Thu Dec 28 11:04:06 1995 Miles Bader * ports.h (ports_interrupt_self_on_port_death): New macro. * interrupt-notified-rpcs.c (ports_interrupt_notified_rpcs): Only bother to lock _PORTS_LOCK if there are notifications. Wed Dec 27 16:27:47 1995 Miles Bader * ports.h (struct rpc_info): Get rid of next_notified/prev_notified_p. (struct rpc_notify): Get rid of port, what, next fields, and add rpc, notify, next, pending, next_req, and prev_req_p fields. (struct ports_notify): New structure. (_ports_notified_rpcs): Declaration removed. (_ports_notifications): New declaration. (_ports_free_ports_notifies): New declaration. Include . * interrupt-on-notify.c (ports_interrupt_rpc_on_notification): Mostly rewrite to use new scheme. * interrupt-notified-rpcs (_ports_notified_rpcs): Variable removed. (_ports_notifications, _ports_free_ports_notifications): New variables. (ports_interrupt_notified_rpcs): Rewrite to use new scheme. (_ports_remove_notified_rpc): Ditto. (cancel_notification): Function removed. (remove_req): New function. Tue Dec 26 14:39:51 1995 Miles Bader * interrupt-notified-rpcs.c (_ports_notified_rpcs, _ports_free_rpc_notifies): New variables. (ports_interrupt_notified_rpcs, cancel_notification, _ports_remove_notified_rpc): New functions. * interrupt-on-notify.c (ports_interrupt_rpc_on_notification, ports_interrupt_self_on_notification): New functions, new file. * ports.h (struct rpc_notify): New structure. (struct rpc_info): Add rpc_notifies, rpc_next_notified, and prev_notified_p fields. (_ports_notified_rpcs, _ports_free_rpc_notifies, _ports_remove_notified_rpc, ports_interrupt_rpc_on_notification, ports_interrupt_notified_rpcs, ports_interrupt_self_on_notification): New declarations. * begin-rpc.c (ports_begin_rpc): Initialize the notifies field. * end-rpc.c (ports_end_rpc): Get rid of any rpc notifications. * no-senders.c (ports_no_senders): Interrupt any rpcs requesting such. * dead-name.c (ports_dead_name): New function. * notify-dead-name.c (ports_do_mach_notify_dead_name): Call ports_dead_name(). * Makefile (SRCS): Add interrupt-on-notify.c, interrupt-notified-rpcs.c, and dead-name.c. Tue Nov 21 22:04:28 1995 Roland McGrath * manage-multithread.c: Don't wire timeouts to zero. Tue Nov 21 09:42:00 1995 Michael I. Bushnell, p/BSG * ports.h (ports_do_mach_notify_dead_name): Declare `extern kern_return_t'. (ports_do_mach_notify_msg_accepted): Likewise. (ports_do_mach_notify_no_senders): Likewise. (ports_do_mach_notify_port_deleted): Likewise. (ports_do_mach_notify_port_destroyed): Likewise. (ports_do_mach_notify_send_once): Likewise. * notify-send-once.c: Include "notify_S.h". * notify-port-deleted.c: Likewise. * notify-msg-accepted.c: Likewise. * notify-port-destroyed.c: Likewise. * notify-no-senders.c: Likewise. * notify-dead-name.c: Likewise. * ports.h (struct port_info): New member `cancel_threshhold'. (ports_S_interrupt_operation): Include seqno arg; declare extern kern_return_t. * interrupt-operation.c: Include "interrupt_S.h". (ports_S_interrupt_operation): Set PI->cancel_threshhold if the incoming seqno is greater than the current threshhold. * manage-multithread.c (ports_manage_port_operations_multithread/internal_demuxer): If the incoming RPC has already been cancelled, then call hurd_thread_cancel before the user's demuxer. * manage-one-thread.c (ports_manage_port_operations_one_thread): Doc fix. * intern-external-port.c (ports_intern_external_port): Initialize PI->cancel_threshhold. * allocate-port.c (ports_allocate_port): Likewise. * reallocate-from-external.c (ports_reallocate_from_external): Clear PI->cancel_threshhold. * reallocate-port.c (ports_reallocate_port): Likewise. Sat Nov 18 08:50:13 1995 Roland McGrath * inhibit-all-rpcs.c: If calling thread is serving an RPC, don't block waiting for that RPC to finish. * inhibit-class-rpcs.c: Likewise. * inhibit-bucket-rpcs.c: Likewise. * inhibit-port-rpcs.c: Likewise. * inhibit-all-rpcs.c (ports_inhibit_all_rpcs): Renamed from inhibit_all_rpcs. Tue Oct 24 13:32:39 1995 Michael I. Bushnell, p/BSG * manage-multithread.c (ports_manage_port_operations_multithread/internal_demuxer): Don't attempt RPC if we can't get a valid port struct. * manage-one-thread.c (ports_manage_port_operations_one_thread/internal_demuxer): Likewise. Mon Oct 9 14:57:48 1995 Roland McGrath * Makefile: Specify shared library dependencies. Fri Sep 22 10:19:17 1995 Roland McGrath * ports.h: Include hurd.h. Fri Sep 8 14:44:03 1995 Michael I. Bushnell, p/BSG * end-rpc.c (ports_end_rpc): Call hurd_check_cancel. Wed Sep 6 11:20:20 1995 Miles Bader * ports.h (ports_interrupt_server, ports_S_interrupt_operation): New declarations. * Makefile (OBJS): Add interruptServer.o. (SRCS): Add interrupt-operation.c. * interrupt-operation.c: New file. * ports.h (ports_notify_server, ports_do_mach_notify_*): New decls. * Makefile (MIGCOMSFLAGS): New variable. (OBJS): Added notifyServer.o. (SRCS): Added notify-dead-name.c, notify-no-senders.c, notify-port-destroyed.c, notify-msg-accepted.c, notify-port-deleted.c, and notify-send-once.c. * notify-dead-name.c: New file. * notify-no-senders.c: New file. * notify-port-destroyed.c: New file. * notify-msg-accepted.c: New file. * notify-port-deleted.c: New file. * notify-send-once.c: New file. Wed Aug 30 16:00:36 1995 Miles Bader * inhibit-port-rpcs.c (inhibit_port_rpcs): Renamed to `ports_inhibit_port_rpcs'. Tue Aug 29 15:59:49 1995 Michael I. Bushnell, p/BSG * manage-multithread.c (ports_manage_port_operations_multithread): Hammer WIRE_CTHREADS on for now. Thu Aug 24 10:25:52 1995 Miles Bader * inhibit-port-rpcs.c (inhibit_port_rpcs): thread_cancel -> hurd_thread_cancel. Include . * inhibit-class-rpcs.c (ports_inhibit_class_rpcs): Ditto. * inhibit-bucket-rpcs.c (ports_inhibit_bucket_rpcs): Ditto. * interrupt-rpc.c (ports_interrupt_rpc): Ditto. * inhibit-all-rpcs.c (inhibit_all_rpcs): Ditto. * Makefile (OBJS): Use :.c=.o notation. Wed Aug 23 15:03:11 1995 Miles Bader * Makefile (REMHDRS): Removed. Order changed a bit. Fri Jul 21 11:45:22 1995 Michael I Bushnell * get-right.c (ports_get_right): If the right is null (because we are closing down), then just return null. (This helps in a race in ufs/ex2fs). * complete-deallocate.c (_ports_complete_deallocate): Clear PI->port_right; and do it before releasing _ports_lock. * manage-multithread.c (ports_manage_port_operations_multithread): For now, wire GLOBAL_TIMEOUT and THREAD_TIMEOUT to zero. Tue Jul 18 14:29:49 1995 Michael I Bushnell * manage-multithread.c (ports_manage_port_operations_multithread) [thread_function]: Return int. Don't cthread_exit child threads; just let them return normally. Wed Jul 12 13:32:22 1995 Michael I Bushnell * resume-class-rpcs.c (ports_resume_class_rpcs): Clear blocked flag using correct name. * manage-multithread.c (ports_manage_port_operations_multithread) [internal_demuxer]: Increment NREQTHREADS and TOTALTHREADS *before* forking newthread. [thread_function]: Don't increment NREQTHREADS and TOTALTHREADS here. Initialize NREQTHREADS and TOTALTHREADS in main body of function. Sat Jul 8 15:10:50 1995 Miles Bader * allocate-port.c (ports_allocate_port): Properly add PI to CLASS's port list when the list is empty (why did this work before?). * intern-external-port.c (ports_intern_external_port): Ditto. * begin-rpc.c (ports_begin_rpc): Ditto adding INFO to PI's current_rpcs list. * create-class.c (ports_create_class): Initialize the PORTS and COUNT fields. Thu Jul 6 15:36:57 1995 Michael I Bushnell * Makefile: Removed dependencies that are now automatically generated. Tue Jun 27 15:28:54 1995 Michael I Bushnell * Makefile (SRCS): Add it *back*. * stubs.c: New file. Mon Jun 26 16:51:42 1995 Michael I Bushnell * ports.h: Fix spelling error. * manage-multithread.c (ports_manage_port_operations_multithread): Declare NREQTHREADS asd TOTALTHREADS volatile. * manage-multithread.c (ports_manage_port_operations_multithread/thread_function): Don't hold lock while setting TIMEOUT. When master goes back to wait for messages, it should unlock LOCK. Declare ERR inside THREAD_FUNCTION so it doesn't get shared by multiple threads. Thu Jun 22 11:28:56 1995 Michael I Bushnell * get-right.c (ports_get_right): Parenthesize flag test correctly. * reallocate-from-external.c (ports_reallocate_from_external): Likewise. * enable-bucket.c (ports_enable_bucket): Clean flag correctly. * lookup-port.c (ports_lookup_port): UNlock port lock at exit of function. * bucket-iterate.c: Include and . (ports_bucket_iterate): Fix decl of NXT. Wed Jun 21 14:25:04 1995 Michael I Bushnell * Makefile (SRCS): Added bucket-iterate.c. * bucket-iterate.c: New file. * ports.h (port_bucket_iterate): New decl. Tue Jun 20 12:35:44 1995 Michael I Bushnell * enable-bucket.c: Include . * enable-class.c: Likewise. * count-bucket.c: Likewise. * libports/lookup-port.c (ports_lookup_port): Remove assignment from if test.