Wed Aug 20 14:06:46 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* main.c (main): New args for
	ports_manage_port_operations_multithread.  

1997-06-30  Miles Bader  <miles@gnu.ai.mit.edu>

	* main.c (main): Arg parsing added.  HOLD variable removed.
	(argp_program_version): New variable.
	Include <argp.h> and <version.h>.

Thu Jun 26 14:03:16 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* cpu-types.c (mach_cpu_types): Add entries for 486, 586, 686,
	and powerpc. 
	(mach_cpu_subtypes): Add subtypes for new x86 subtypes.  (None
	added for powerpc yet.)

Mon Feb  3 16:52:14 1997  Miles Bader  <miles@gnu.ai.mit.edu>

	* hash.c (pid_find, task_find, task_find_nocreate, reqport_find):
	Don't dereference P if it's 0.

Fri Oct 25 20:30:22 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* host.c: Include <version.h>.

Thu Oct 24 16:13:40 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* host.c (initialize_version_info): Construct UNAME_INFO.machine
	with a dash instead of a slash so that it can be used as a file
	name component.

	* host.c (initialize_version_info): Copy our version into element
	0 of server_versions, not element 1.  Use HURD_VERSION instead of
	OUR_VERSION.  Use literal "proc" instead of OUR_SERVER_NAME.
	* proc.h (OUR_SERVER_NAME, OUR_VERSION): Delete macro.

Thu Sep 12 16:33:49 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* Makefile (HURDLIBS): New variable.
	(proc): Delete special dependency.

Thu Sep  5 10:43:39 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* host.c (struct server_version): Delete member `release'.
	(kernel_name, kernel_version): New variables.
	(rebuild_uname): Do the voting on versions, not releases.
	(initialize_version_info): Store kernel information in kernel_name
	and kernel_version, not as an entry in the server_versions array. 
	Don't fill in a release for ourselves.
	(S_proc_register_version): Ignore RELEASE arg.

Sun Jul 28 22:57:03 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* info.c (get_string_array): Correctly adjust NEWSIZE when
	reallocating to add very long strings.

Sat Jul 20 10:08:05 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* msg.c (S_proc_getmsgport): Deal with PID dying while we're waiting.

Fri Jul 19 18:22:46 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* msg.c (S_proc_setmsgport): Bother to request DEAD_NAME
	notification on new message port being installed.

Thu Jul 18 13:23:51 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* msg.c (S_proc_setmsgport): Use MOVE_SEND, not COPY_SEND, to
	return the old message port to the caller.

	* mgt.c (S_proc_handle_exceptions): Release newly created reference
 	on E when we are done with it.
	(S_proc_child): Deallocate our ref on childt once we know we will
	return success.
	(S_proc_reassign): Likewise for NEWT.

	* main.c (main): Don't wire proc anymore.  It's not necessary or
	useful. 

Thu Jul 18 04:15:49 1996  Roland McGrath  <roland@baalperazim.frob.com>

	* mgt.c (add_tasks): Fix vm_deallocate call to use mach_task_self ()
	instead of mach_host_self ().

Tue Jul 16 11:34:34 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* wait.c (EWOULDBLOCK): Define to work around new libc bug.

Sun Jul  7 21:04:03 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* mgt.c (S_proc_reauthenticate): Don't use unsafe MOVE_SEND in
 	user-side interruptible RPC.

Wed Jul  3 14:44:00 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* mgt.c (process_has_exited): When reparenting children to init,
 	if one of them is dead, alert init.

Fri Jun 28 11:54:21 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* proc.h (check_owner): Return true any time PROC1 has root.

Thu May 30 19:11:31 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* pgrp.c (S_proc_getsidport): MAKE_SEND_ONCE -> MAKE_SEND.

Wed May 29 11:35:37 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* info.c (S_proc_getprocinfo): Get rid of temp hack for strnlen.

Fri May 24 15:50:14 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* info.c (S_proc_getprocinfo): Set PI->exitstatus and PI->sigcode.

	* mgt.c (process_has_exited): Don't call alert_parent if P->p_task
 	is null (which happens only if this is the stub process in
 	proc_reassign).  This because the parent is uninvolved in the
 	death of stubp.

Wed May 22 17:47:15 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* stubs.c (send_signal): Send sigcode in message.

	* msg.c (S_proc_setmsgport): Add OLDMSGPORT_TYPE param.

Tue May 14 22:50:49 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* proc.h (check_owner): New inline function.
	* info.c (S_proc_pid2task, S_proc_pid2proc): Use check_owner.

Sun May 12 13:22:04 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* info.c (PI_FETCH_THREAD_DETAILS): New macro.
	(S_proc_getprocinfo): Only allocate thread detail storage if we're
	actually returning thread details (a lone PI_FETCH_THREADS simply
	means "number of threads").  React to errors somewhat more gracefully.

	* info.c (S_proc_getprocinfo): Add comment.

Fri May 10 16:32:17 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* info.c (S_proc_get_tty): New function.

Fri May 10 09:26:53 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* mgt.c (S_proc_exception_raise): Fetch sigcode from correctly
 	named member of HSD.

Thu May  9 19:13:14 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* mgt.c (S_proc_reauthenticate): Use new authentication
	interface.

	* mgt.c (S_proc_setowner): Expect and interpret new CLEAR parm.

	* info.c (S_proc_getprocinfo): FLAGS is now an in-out parameter.

	* proc.h (struct proc): Add p_sigcode.
	* wait.c (S_proc_wait): New parm SIGCODE; return p_sigcode in it.
	(S_proc_mark_stop): New parm SIGCODE; record it.
	(S_proc_mark_exit): Likewise.
	(alert_parent): Set P->p_sigcode if process is dying irregularly.
	* mgt.c (S_proc_exception_raise): Set P->p_sigcode; use new
	_hurd_exception2signal args.

Mon May  6 14:23:11 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* proc.h (OUR_VERSION): Upgrade to 0.0.

Tue Apr 30 16:48:49 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* info.c (S_proc_getprocinfo): Release GLOBAL_LOCK around time
 	consuming bits, and more importantly, potential calls to P's
 	msgport, which can block.
	Fix test when appending to WAITS.

Mon Apr 29 16:58:24 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* info.c (S_proc_getprocinfo): Install temporary hack so things at
 	least compile.  Turned on thread_waits code.

Mon Apr 15 13:51:41 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* mgt.c (process_has_exited): Clear p->p_waited.

Fri Mar 29 09:38:28 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* wait.c (S_proc_wait): When looking for a specific pid, use
	pid_find_allow_zombie, not ordinary pid_find.

	* mgt.c (S_proc_reassign): Use new ports_transfer_right call
 	instead of claim/install sequence; the latter has leaves the port
 	out of any hash table for a time, which produces a race with
 	incoming messages.

Thu Mar 28 09:21:16 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* mgt.c (S_proc_reassign): Make send once right directly from
	value in P->p_pi, don't use ports_get_right.

	* mgt.c (process_has_exited): Inhibit this call from happening
	twice.

	* info.c (S_proc_pid2task): Return MACH_PORT_NULL for a zombie.
	(S_proc_pid2proc): Likewise.

	* Makefile (mutated_ourmsg_U.h): New target.
	* mgt.c: Include mutated_ourmsg_U.h instead of ourmsg_U.h.
	* pgrp.c: Likewise.

	* wait.c: Don't include ourmsg_U.h or process_reply_U.h.
	* msg.c: Don't include process_reply_U.h.

	* msg.c (S_proc_getmsgport): Allow call to be made for dead
	processes; they'll return null.  Thank you, Mr. Posix.
	* mgt.c (process_has_exited): Null out P->p_msgport and drop
	reference.

	* wait.c (S_proc_wait): Return EOPNOTSUPP if RPC destination is
	not a valid process.
	(S_proc_mark_stop): Likewise.
	(S_proc_mark_exit): Likewise.
	(S_proc_mark_cont): Likewise.
	(S_proc_mark_traced): Likewise.
	(S_proc_mod_stopchild): Likewise.
	* msg.c (S_proc_setmsgport): Likewise.
	(S_proc_getmsgport): Likewise.
	* pgrp.c (S_proc_setsid): Likewise.
	(S_proc_getsidport): Likewise.
	(S_proc_setpgrp): Likewise.
	(S_proc_mark_exec): Likewise.
	* mgt.c (S_proc_reauthenticate): Likewise.
	(S_proc_child): Likewise.
	(S_proc_reassign): Likewise.
	(S_proc_setowner): Likewise.
	(S_proc_getpids): Likewise.
	(S_proc_set_arg_locations): Likewise.
	(S_proc_dostop): Likewise.
	* info.c (S_proc_pid2task): Likewise.
	(S_proc_proc2task): Likewise.
	(S_proc_pid2proc): Likewise.
	(S_proc_make_login_coll): Likewise.
	(S_proc_setlogin): Likewise.
	(S_proc_getlogin): Likewise.
	* host.c (S_proc_sethostid): Likewise.
	(S_proc_sethostname): Likewise.
	(S_proc_getprivports): Likewise.
	(S_proc_setexecdata): Likewise.

	* proc.h (process_drop): New (inline) function.
	* hash.c (reqport_find): Only deallocate newly found reference
	if process is dead.
	* Makefile (MIGSTUBS): Delete process_replyUser.c.
	(MIGSFLAGS): Provide new definition.
	* msg.c (S_proc_setmsgport): Spawn thread to tickle init instead
	of sending reply here.
	(tickle_init): New function.

Mon Mar 25 17:02:04 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* Makefile (proc): Add libshouldbeinlibc.a.
	* main.c: Include <wire.h>.
	(main): Use wire_task_self instead of doing it ourselves.

Thu Mar 21 11:59:29 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* wait.c (S_proc_wait) [child_ready]: Flip test of waited flag.
	* mgt.c (new_proc): Oops, reinstall code to request dead name
 	notification on the task port.

Wed Mar 20 10:41:01 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* pgrp.c (S_proc_setpgrp): Delete bletcherous hack from July 22,
 	1995.

	-- All these changes get rid of zombies and integrate them
	   into the regular process tables. --
	* proc.h (struct zombie): Delete type.
	(zombie_list): Delete variable.
	* hash.c (pid_find): Return 0 if process is dead.
	(task_find): Likewise.
	(task_find_nocreate): Likewise.
	(pidfree): Don't call zombie_check_pid.  Call
	pid_find_allow_zombie instead of pid_find.
	(pid_find_allow_zombie): New function.
	(prociterate): Don't call FUN for dead processes.
	* mgt.c (new_proc): Initialize P->p_dead.
	(process_has_exited): Don't call reparent_zombies.  Set P->p_dead.
	Don't remove from hash tables here, delete ref to task port or
	remove from parent's list of children (now in
	complete_exit). Don't remove from pgrp here.
	(complete_exit): New function.
	* wait.c (alert_parent): Don't create zombie.
	(reparent_zombies): Delete function.
	(S_proc_wait): Don't scan zombie list; check dead children at the
	same time as stopped children.  When completing wait on a dead
	child, call complete_exit after we've finished work.
	(zombie_check_pid): Delete function.
	* proc.h (complete_exit): Provide prototype.

	-- All these changes make proc multithreaded
	   and use the ports library in the usual fashion
	   (well, almost the usual fashion) --
	* Makefile (proc): Mention ../libports/libports.a.
	* hash.c (porthash, exchash): Delete variables.
	(reqport_find): Use ports library instead of porthash.
	(add_proc_to_hash): Don't add to porthash.
	(remove_proc_from_hash): Don't remove from porthash.
	(exc_find, remove_exc_from_hash): Delete functions.
	* mgt.c (new_proc): Allocate new proc structure with
	ports_create_port.  Don't frob P->p_reqport.
	(process_has_exited): Don't frob P->p_reqport, cal
	ports_destry_right instead.
	* proc.h (proc_bucket, proc_class): New variables.
	(request_portset): Delete variable.
	* proc.h (struct proc): Delete members `p_reqport' and
	p_porthashloc.  Add member `p_pi'.
	* Makefile (MIGSFLAGS): Delete variable.
	* proc.h (global_lock): New variable.
	* main.c (global_lock): Provide definition.
	(message_demuxer): Lock global_lock around work.
	(main): Initialize proc_bucket and proc_class instead of
	request_portset.  Initialize generic_port through ports
	library calls.  Fetch startup procserver port through ports
	library instead of reading p_reqport.  Initialize exc_class.
	* mgt.c (S_proc_reauthenticate) Likewise.

	* proc.h: Include <hurd/ports.h> and <cthreads.h>.
	* info.c (S_proc_task2proc): Use ports_get_right instead
	of p_reqport.
	(S_proc_pid2proc): Likewise.
	* proc.h (exc_port_class): New variable.
	(struct exc): Add member `pi'.  Remove member `excport'.
	* mgt.c (S_proc_handle_exceptions): Allocate using
	ports library.
	(S_proc_exception_raise): Use ports library to manage
	structure.
	(exc_clean): New function.


***

	-- All these changes switch to using condition variables
	   for wakeup instead of explicit block code --
	* mgt.c (new_proc): Initialize P->p_wakeup.
	* wait.c (waiting_parent_cares): Delete function.
	* Makefile (MIGSTUBS): Delete interruptServer.o.
	* main.c (message_demuxer): Remove call to interrupt_server.
	Add call to ports_interrupt_server.
	* wait.c: Don't include "interrupt_S.h".
	(alent_parent): Unconditionally enqueue zombie.
	(S_interrupt_operation): Delete function.
	(abort_wait): Delete function.
	* msg.c (abort_getmsgport): Delete function.
	* wait.c (alert_parent): Use condition_broadcast instead of
	continuation stuff.
	(reparent_zombies): Likewise.
	(S_proc_mark_stop): Likewise.
	* msg.c (check_message_return): Likewise.
	(check_message_dying): Likewise.
	* wait.c (S_proc_wait): Use condition_wait instead of continuation
	stuff; never return EBUSY.
	* msg.c (S_proc_getmsgport): Likewise.
	* proc.h (struct proc): New member `p_wakeup'.  Delete member
	`p_continuation'.



Mon Feb 12 14:13:55 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* info.c (S_proc_getprocinfo): Fail reasonably for #ifdef'd-out
	thread waits code.

Fri Feb  9 15:45:07 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* info.c (S_proc_getprocinfo): Support returning wait strings.

Fri Feb  9 15:19:14 1996  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* mgt.c (S_proc_exception_raise): Rewritten.
	(S_proc_handle_exceptions): Don't set E->replyport.
	(S_proc_exception_raise_reply): Function removed.
	* main.c (message_demuxer): Don't call proc_excrepl_server.
	* proc_excrepl.defs: File removed.
	* Makefile (DIST_FILES): Remove proc_excrepl.defs.
	(MIGSTUBS): Remove its objects.
	* proc_exc.defs: Add msgoption arg.
	Use integer_t where appropriate.
	* notify.c (do_mach_notify_no_senders): Don't use E->replyport.
	* proc.h (struct exc): Removed useless members `replyport',
	`replyporttype'.

Wed Dec 20 17:29:13 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* mgt.c (S_proc_reassign): Have notifications sent to the correct
 	request port.
	Once we've given STUBP's request port to P, don't leave it in
 	STUBP, so process_has_exited() doesn't dealloc it.

	* pgrp.c (S_proc_getsidport): Add and use new arg sessport_type.

Wed Dec 20 13:31:01 1995  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* mgt.c (new_proc): Don't set P->p_noowner for processes 0 and 1.

Wed Dec 20 13:09:04 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* info.c (get_vector): Rewritten without arbitrary limits.

Tue Dec 19 18:14:30 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* pgrp.c (free_session): Correctly get rid of the receive right
	we're holding.
	(S_proc_getsidport): Return errors.

Tue Dec 19 13:58:59 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* info.c (get_string_array): Fix stupid bug in copying to newly
	allocated space.

Tue Dec 19 13:17:46 1995  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* mgt.c (S_proc_reauthenticate): Reverse miles' last change.

Mon Dec 18 19:56:03 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* mgt.c (S_proc_reauthenticate): Don't return 0 for the new port.

Tue Nov 21 13:50:30 1995  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* wait.c (S_interrupt_operation): Include new seqno parameter.

Tue Nov 14 13:15:55 1995  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* wait.c (S_proc_wait): `p->msgportwait' ==> `p->p_msgportwait'
 	typo fix.

Thu Nov  9 13:01:28 1995  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* msg.c (S_proc_setmsgport): Only do the RPC reply by hand for
 	init.  Also, return the correct port in that by-hand reply.

	* msg.c (S_proc_getmsgport): Also return EBUSY if P->waiting,
 	because both share the same memory in the proc structure.
	* wait.c (S_proc_wait): Likewise, mutatis mutandis.

Wed Nov  8 13:10:27 1995  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* info.c (S_proc_getprocinfo): Don't attempt msg_report_wait if
 	P->p_msgport is not valid.

	* info.c (S_proc_getprocinfo): Inhibit PI_FETCH_THREAD_WAITS for
 	now.

Tue Nov  7 19:49:32 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* info.c (S_proc_getprocinfo): Calculate the size of the returned
	structure correctly.

Sun Nov  5 02:05:10 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* proc.h: Include <sys/resource.h>.

	* info.c (S_proc_getprocinfo): Add NOISE and NOISE_LEN args.
	Fix various typos.  Initialize ERR.

Tue Oct 31 14:19:04 1995  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* wait.c (struct zombie): Deleted; now in proc.h.
	(zombie_list): Likewise.
	* proc.h (struct zombie): New type.
	(zombie_list): New variable.

	* info.c (S_proc_getprocinfo): Implement all the rest of the PI
 	flags except PI_ZOMBIE.

Mon Oct 30 16:22:49 1995  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* info.c (S_proc_getprocinfo): Support new FETCH flags; support
 	new msg_report_wait call; improve organization.

	* info.c (S_proc_getprocenv): Removed #ifdef notyet; fixed args to
 	get_string_array.

Sat Sep 16 12:57:31 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* ourmsg.defs: New file.
	* Makefile (DIST_FILES): Added ourmsg.defs.
	(ourmsg_U.h ourmsgUser.c, ourmsg.defs): Targets removed.

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

	* Makefile (MIGSTUBS): New variable.
	(OBJS): Get the mig stubs from $(MIGSTUBS).

Wed Aug 23 14:25:30 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* Makefile (proc): Put all dependencies here.
	(HURDLIBS, REMHDRS): Removed.
	(OBJS): Calculate the appropiate bits from $(SRCS).

Sat Jul 22 15:04:52 1995  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* wait.c (zombie_check_pid): Examine Z->pgrp too.

	* pgrp.c (S_proc_setpgrp): Install bletcherous hack.

Thu Jul  6 15:41:22 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* hash.c: "ihash.h" -> <hurd/ihash.h>.

	* Makefile (ourmsg_U.h ourmsgUser.c): Use local ourmsg.defs
 	instead of include file directly.
	(ourmsg.defs): New target.

	* Makefile: Removed dependencies that are now automatically
 	generated.

Tue Jun 27 12:02:47 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* mgt.c (S_proc_dostop): Remove assigments from inside if tests.

Tue Jun  6 13:24:51 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* Makefile (OBJS): Removed ihash.o and primes.o.
	(CPPFLAGS): Deleted addition of -I../lib.
	(vpath): Deleted spec.
	(REMHDRS): Added ../libihash/ihash.h.
	(HURDLIBS): Added libihash.

Wed Apr 26 14:32:19 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* wait.c (S_proc_wait): Use `waiter_cares', not
	`waiting_parent_cares' in zombie check.

Tue Apr 18 09:30:13 1995  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>

	* wait.c (reparent_zombies): Send SIGCHLD signal to init.

	* wait.c (S_proc_wait): Don't return ESRCH; return ECHILD.

Wed Apr 12 14:36:30 1995  Michael I Bushnell  <mib@duality.gnu.ai.mit.edu>

	* Makefile (SRCS): Omit primes.c (it's moved to the lib dir).

Thu Apr  6 14:29:06 1995  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* info.c (S_proc_getprocinfo): New var `tp'.  Bother to set
	PI->logincollection.

Wed Apr  5 20:32:02 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* wait.c (waiter_cares, waiting_parent_cares): New functions.
	(alert_parent, reparent_zombies, S_proc_wait, S_proc_mark_stop):
	Use them.

Tue Apr  4 14:36:36 1995  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* main.c (main): Wire text and data segment on startup to avoid
	failure mode during non-standalone pseudo-crash.

Tue Mar 14 11:55:00 1995  Miles Bader  <miles@geech.gnu.ai.mit.edu>

	* hash.c (addhash, findhash): Moved to ihash.c (which is has a more
	generic interface) and renamed ihash_add & ihash_find; all callers
	changed.  Other changes: struct htable becomes struct ihash, and
	all routines that previously deleted things explicitly use
	ihash_locp_remove instead.

Thu Jan 19 02:01:14 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* pgrp.c (S_proc_setpgrp): Use nowait_msg_proc_newids instead of
        nowait_proc_newids.
	* mgt.c (S_proc_child): Likewise.

Tue Jan 17 17:48:32 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* mgt.c (check_uid): Return true if P has root.

	* proc.h (struct proc): Make `argv' and `envp' members
        `vm_address_t'.

Thu Nov  3 12:13:49 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* mgt.c (S_proc_getallpids): Don't dereference PIDS in call
	to vm_allocate.

	* info.c (S_proc_getprocinfo): Don't take address of PIARRAY
	in call to vm_allocate.  Dereference PIARRAY in call to
	vm_deallocate.

Fri Oct 14 04:54:46 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* mgt.c (new_proc): Don't assume MACH_PORT_NULL is zero.
	(genpid): Deal with all pids between STAR_OVER and WRAP_AROUND
	being used.

Mon Oct 10 14:23:00 1994  Jim Blandy  <jimb@geech.gnu.ai.mit.edu>

	* primes.c (nextprime): Doc fix.

Mon Oct 10 02:18:02 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* host.c (rebuild_uname): If all the server versions after [0]
	(the microkernel) match, merge them all into one "Hurd-VERSION"
	element in the uname version string.

Sun Oct  2 20:36:57 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* host.c (S_proc_sethostname): Don't write off end of
	uname_info.nodename.
	(rebuild_uname): Rewritten.
	(initialize_version_info): Write Mach version info as first
	element of server_versions.
	(machversion): Variable removed.

Sat Sep 10 11:37:32 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* mgt.c (make_ids): Copy from UIDS and GIDS into newly allocated
	space, not vice versa.

Wed Aug 31 11:03:13 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* mgt.c (S_proc_reassign): Rather than getting a new request port,
	preserve STUBP's request port.  This is more convenient for
	users (and equally good security), and it's what the protocol spec
	says anyway.

Tue Aug 30 12:44:37 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* primes.c: Replaced file with new version from Jim Blandy
	(jimb@gnu.ai.mit.edu), David Carlton (carlton@math.mit.edu).

	* proc.h (check_dead_execdata_notify): Add prototype.

Mon Aug 29 12:53:27 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* mgt.c (S_proc_reauthenticate): Use new authentication protocol.

Tue Aug 23 11:41:26 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* pgrp.c (S_proc_setpgrp): If we don't actually change the pgrp,
	still send proc_newids; the library depends on always getting it.

Mon Aug 22 17:09:21 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* wait.c (S_proc_mark_stop): Removed now meaningless assert.

	* info.c (S_proc_getloginpids): Compute size in realloc correctly.

Mon Aug 22 13:29:21 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* wait.c (S_proc_mod_stopchild): Negate VALUE; sense of
	p_nostopcld flag is opposite of flag value described in process.defs.

Fri Aug 19 10:21:57 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* pgrp.c (S_proc_getpgrppids): Understand PGID of zero as meaning
	caller's pgrp.

	* mgt.c (S_proc_child): Check CHILDP->p_msgport against
	MACH_PORT_NULL explicitly.

	* pgrp.c (join_pgrp): If pg->pg_orphcnt has significantly changed,
	then notify all the processes in the pgrp.
	(leave_pgrp): Only send newids message if ip->p_msgport is set.
	* mgt.c (S_proc_child): Becase join_pgrp now always sends
	newids; don't do it here if we called join_pgrp.

Fri Aug 19 04:53:04 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* pgrp.c (leave_pgrp): Fix swapped args to nowait_proc_newids.
	(join_pgrp): Call nowait_proc_newids to notify the process.

Thu Aug 18 10:40:13 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* mgt.c (S_proc_reauthenticate): Use MACH_MSG_TYPE_MAKE_SEND
	to create a send right from P->p_reqport.

	* main.c (main): Removed var `authhandle'.  Use global
	`authserver' instead.

Wed Aug 17 14:02:31 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* host.c (init_stdarrays): Removed function.
	(S_proc_execdata_notify): Never call init_stdarrays.
	Only call exec_setexecdata if std_port_array is set.
	(S_proc_getexecdata): Return error if there is no std_port_array.

Mon Aug 15 16:12:22 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* host.c (check_dead_execdata_notify): New function.
	* notify.c (do_mach_notify_dead_name): For notifications sent
	to GENERIC_PORT, call check_dead_execdata_notify.
	* main.c (main): Create GENERIC_PORT and put it in
	REQUEST_PORTSET.

	* host.c (init_stdarrays): New function.
	(S_proc_execdata_notify): Call init_stdarrays the first time.
	(S_proc_getexecdata): Likewise.

	* host.c: Include <hurd.h> for various frobs.  Include
	<unistd.h> for getpid.

Fri Jul 22 11:01:53 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* Makefile: Rewritten in accord with new scheme.
	* wait.c: Include "ourmsg_U.h" instead of "msg.h".
	Include "process_reply_U.h" instead of "process_reply.h".
	Include "process_S.h" instead of "proc_S.h".
	* mgt.c: Include "proc_exc_U.h" instead of "proc_exc.h".
	Include "proc_excrepl_U.h" insted of "proc_excrepl.h".
	Include "ourmsg_U.h" instead of "msg.h".
	Include "process_S.h" instead of "proc_S.h".
	* pgrp.c: Include "process_S.h" instead of "proc_S.h".
	Include "ourmsg_U.h" instead of "msg.h".
	* msg.c: Include "process_reply_U.h" instead of "process_reply.h".
	* host.c: Include "process_S.h" instead of "proc_S.h".
	* info.c: Likewise.

Wed Jul 20 16:18:31 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* wait.c (alert_parent): Delete unused variable `err'.

Tue Jul 19 12:45:43 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* Makefile (proc): Don't use variable $(link) anymore.

Mon Jul 11 14:32:17 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* pgrp.c (leave_pgrp): When pulling process off of pgrp list,
	mutate *both* links.
	(free_pgrp): When pulling pgrp off of session list, mutate
	*both* links.

Tue Jul  5 14:23:21 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* Makefile (TAGSLIBS, TAGSHDRS): New variables.

Fri Jul  1 10:57:07 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* stubs.c (send_signal): Rewrote to be machine independent
	and cleaner.

Thu Jun 30 14:05:21 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* stubs.c: New file.
	* wait.c (alert_parent): Call send_signal instead of nowait_sig_post.
	(S_proc_mark_stop): Likewise.
	* pgrp.c (leave_pgrp): Likewise.
	* proc.h (send_signal): New prototype.
	* Makefile (OBJS): Added stubs.o.
	(SRCS): Added stubs.c.
	(LIBS): New var to get cthreads library.

	* wait.c (alert_parent): Eliminate pointless assert with confusingly
	incorrect comment.

	* hash.c (findhash): If we find a slot with ID matching the
	one we're looking for, but it has been deleted, then return
	0 rather than HASH_DEL.

	* wait.c (S_proc_wait, reparent_zombies, alert_parent): Use
	macros WAIT_ANY and WAIT_MYPGRP instead of magic values -1
	and 0.

	* wait.c (S_proc_wait): Implement correct interpretation of PID
	argument: -1 means any child; 0 means child in the same pgrp.
	[Incorrect semantics were in loop to search zombies, and loop
	looking for stopped children]
	(reparent_zombies): Likewise.  [Incorrect semantics were in
	PID check before returning startup_proc's wait.]
	(alert_parent): Likewise.  [Incorrect semantics were in
	PID check before returning P->p_parent's wait.]

	* wait.c (S_proc_wait): Only return wait on stopped child if
	it passes the PID test.

	* pgrp.c (S_proc_setpgrp): Don't do process group change if we are
	changing into our own process group.
	* mgt.c (S_proc_child): Likewise.

	* pgrp.c (S_proc_setpgrp): When PID is zero, act on calling
	process; when PGID is zero, use pid of affected process.
	(S_proc_setpgrp): EPERM check should succeed if pgid is the
	affected process's *pid*, not pgrp.

Thu Jun 30 08:40:35 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* mgt.c (S_proc_dostop): Use the proper allocation for task_threads.
	Check for errors.  Deallocate the send right from CONTTHREAD too.

	* wait.c (alert_parent): Send SIGCHLD to the parent.

Tue Jun 28 18:12:43 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* primes.c: Include <assert.h>.
	(nextprime): Use calloc instead of alloca, bzero.  P might be
	bigger than will fit on the stack.  Assert non-null return
	from calloc and realloc.

Tue Jun 28 13:57:08 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* main.c (main): Set priority of proc server to 2 so that we
	get more CPU than ordinary programs.

Fri Jun 24 17:29:55 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* hash.c (struct htable): New member `locps'.
	(addhash): Store LOCP into hash table for use during rehash.
	During rehash, then provide correct LOCP parm for old elements.
	Allocate and free HT->locps as appropriate.

Fri Jun 24 04:15:16 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* mgt.c (S_proc_setprocargs): Renamed to S_proc_set_arg_locations.
	(S_proc_get_arg_locations): New function.

Mon Jun 20 15:07:00 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* Makefile (install): Use $(INSTALL_BIN) instead of cp.

Fri Jun 17 13:00:27 1994  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* mgt.c (S_proc_child): Reverse Roland's change of June 11.

Sat Jun 11 11:20:16 1994  Roland McGrath  (roland@geech.gnu.ai.mit.edu)

	* mgt.c (S_proc_child): Inherit the argv and envp values from the
	parent.

Fri May 27 16:03:53 1994  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* primes.c: Doc fix, with appreciation to Jim Blandy.

Fri May 13 16:58:13 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* info.c (S_proc_getprocinfo): Only scan through the threads
	if task_info succeeds.

	* info.c (S_proc_getprocinfo): Behave properly if one of the
	threads has died in between the call to task_threads and the
	calls to thread_info (just pretend it never existed).

	* info.c (get_string, get_vector, S_proc_getprocinfo): If the task
	has died (there's a race between pending requests and processing
	of dead-name notifications) then convert MACH_SEND_INVALID_DEST to
	ESRCH.

Thu May 12 00:59:03 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* main.c (main): Take three args.  Store ARGV and ENVP in SELF_PROC.

	* info.c (S_proc_getprocargs): Remove `#ifdef notyet's.
	(get_string, get_vector, get_string_array): Functions exposed.
	(get_string_array): Set BP before the loop.  Use a for loop that
	iterates over elts in VECTOR.  Fix check of LEN to reallocate buffer.
	(S_proc_getprocargs): Cast BUF to vm_address_t * for get_string_array.
	(get_vector): Fix pointer arithmetic; break out of loop when done.
	Check for error from malloc.
	(get_string): Use memchr for scanning.  Check for error from
	malloc.  Pass READLEN correctly to vm_deallocate.

	* msg.c (S_proc_setmsgport): Take new reply port args.
	Send reply before trying startup_essential_task.
	Include <hurd/startup.h> to declare startup_essential_task.

	* cpu-types.c: New file.
	* Makefile (SRCS, OBJS): Add it.
	* host.c: Include <stdio.h> for sprintf.
	(rebuild_uname): Removed unused variable J.
	(S_proc_register_version): Fix arg types.
	Use master_host_port, not host_priv.
	Remove unused variable J.
	(server_versions): Fix syntax errors in struct definition.
	(S_proc_uname): Fixed type of first arg.
	(rebuild_uname): Fix typo.
	(initialize_version_info): Cast args to host_info.
	(initialize_version_info): Allocate space for machversion.

Mon May  9 14:32:37 1994  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* mgt.c (new_proc): Regard init as having a dead message
	port initially.

	* msg.c (S_proc_setmsgport): When init chimes in, tell it
	we are essential.

	* proc.h (OUR_VERSION, OUR_SERVER_NAME): New macros.
	* host.c (uname_info, machversion, server_versions,
	nserver_versions, server_version_nalloc): New variables.
	(S_proc_register_version, rebuild_uname, initialize_version_info,
	S_proc_uname): New functions.
	(S_proc_sethostname): Also set uname_info.nodename.
	* main.c (main): Call initialize_version_info.

Fri May  6 13:00:36 1994  Michael I Bushnell  (mib@geech.gnu.ai.mit.edu)

	* host.c (S_proc_gethostname): If HOSTNAME is null, return
	an empty hostname instead of crashing.
	(S_proc_gethostname): Test buffer length properly; allocate
	space for the null too.

	* mgt.c (process_has_exited): delete unused variable LAST.
	* msg.c (check_message_return): delete unused variables I,
	MSGPORTS, and CP.  Changed type of second arg to `void *'
	so that the function type is appropriate for the first arg
	to prociterate.
	(check_message_dying): delete unused variable I.

	* wait.c, host.c, info.c, mgt.c, notify.c, pgrp.c: Changed MiG
	server stubs' return types from error_t to kern_return_t; the
	types are incompatible right now.

Thu May  5 07:50:24 1994  Roland McGrath  (roland@churchy.gnu.ai.mit.edu)

	* Makefile: Change uses of $(headers) to $(includedir).