Wed Aug  7 15:28:48 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* ports.h (_ports_create_port_internal,
	ports_create_port_noinstall): New declarations.

Thu Jul 18 22:59:14 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* 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  <mib@gnu.ai.mit.edu>

	* 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  <mib@gnu.ai.mit.edu>

	* 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  <roland@delasyd.gnu.ai.mit.edu>

	* allocate-port.c: Add obsolescence link warning.
	* intern-external-port.c: Add obsolescence link warning.

Fri Mar 29 15:21:31 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* 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  <mib@gnu.ai.mit.edu>

	* 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  <mib@gnu.ai.mit.edu>

	* 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  <mib@gnu.ai.mit.edu>

	* 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  <miles@gnu.ai.mit.edu>

	* 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  <miles@gnu.ai.mit.edu>

	* 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  <miles@gnu.ai.mit.edu>

	* 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  <miles@gnu.ai.mit.edu>

	* 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  <miles@gnu.ai.mit.edu>

	* 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  <miles@gnu.ai.mit.edu>

	* 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  <miles@gnu.ai.mit.edu>

	* 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  <roland@churchy.gnu.ai.mit.edu>

	* 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  <miles@gnu.ai.mit.edu>

	* 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  <miles@gnu.ai.mit.edu>

	* 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 <mach/notify.h>.
	* 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  <miles@gnu.ai.mit.edu>

	* 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  <roland@churchy.gnu.ai.mit.edu>

	* manage-multithread.c: Don't wire timeouts to zero.

Tue Nov 21 09:42:00 1995  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* 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  <roland@churchy.gnu.ai.mit.edu>

	* 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  <mib@gnu.ai.mit.edu>

	* 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  <roland@churchy.gnu.ai.mit.edu>

        * Makefile: Specify shared library dependencies.

Fri Sep 22 10:19:17 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* ports.h: Include hurd.h.

Fri Sep  8 14:44:03 1995  Michael I. Bushnell, p/BSG  <mib@duality.gnu.ai.mit.edu>

	* end-rpc.c (ports_end_rpc): Call hurd_check_cancel.

Wed Sep  6 11:20:20 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* 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  <miles@geech.gnu.ai.mit.edu>

	* 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  <mib@duality.gnu.ai.mit.edu>

	* manage-multithread.c (ports_manage_port_operations_multithread):
 	Hammer WIRE_CTHREADS on for now.

Thu Aug 24 10:25:52 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* inhibit-port-rpcs.c (inhibit_port_rpcs): thread_cancel ->
	hurd_thread_cancel.  Include <hurd.h>.
	* 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  <miles@churchy.gnu.ai.mit.edu>

	* Makefile (REMHDRS): Removed.
	Order changed a bit.

Fri Jul 21 11:45:22 1995  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* 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  <mib@geech.gnu.ai.mit.edu>

	* 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  <mib@duality.gnu.ai.mit.edu>

	* 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  <miles@churchy.gnu.ai.mit.edu>

	* 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  <mib@duality.gnu.ai.mit.edu>

	* Makefile: Removed dependencies that are now automatically
 	generated.

Tue Jun 27 15:28:54 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* Makefile (SRCS): Add it *back*.
	* stubs.c: New file.

Mon Jun 26 16:51:42 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* 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  <mib@duality.gnu.ai.mit.edu>

	* 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 <hurd/ihash.h> and <cthreads.h>.
	(ports_bucket_iterate): Fix decl of NXT.

Wed Jun 21 14:25:04 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* 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  <mib@duality.gnu.ai.mit.edu>

	* enable-bucket.c: Include <cthreads.h>.
	* enable-class.c: Likewise.
	* count-bucket.c: Likewise.

	* libports/lookup-port.c (ports_lookup_port): Remove assignment
        from if test.