1999-06-15 Roland McGrath * init.c (booted): New variable. (open_console): Use that instead of system_state. (S_startup_essential_task): Likewise. (do_mach_notify_dead_name): Likewise. (launch_system): New function. (S_startup_essential_task): Call it. * init.c (global_argv): Make static. * init.c (startup_envz, startup_envz_len): New variables. (run, run_for_real): Use those for child environment. (main): Set them up from our ENVP argument. 1999-06-14 Roland McGrath * init.c (main): Barf if run in a normal Hurd environment (not boot). * init.c (record_essential_task): Add missing return. * ttys.c: Include "ttys.h". 1999-06-13 Roland McGrath * init.c (kill_multi_user): Suggest `ps -AlM' in error message. * init.c (record_essential_task): New function, broken out of S_startup_essential_task. (S_startup_essential_task): Call it. (frob_kernel_process): Call it for kernel task port. (kill_everyone): Remove special case for PID 2 (kernel task). * init.c (run): Add const to SERVER arg, PROG local. Don't trim directory name from PROG for argument. * ttys.c (struct terminal): Use `pid_t' for `pid' member. (ttys, nttys, ttyslen): Make variables static. (setup_terminal, add_terminal, find_line, startup_terminal, shutdown_terminal): Make all these functions static. Move all the /etc/ttys handling stuff into a separate source file. * init.c (_PATH_LOGIN, WINDOW_DELAY, struct terminal, nttys, ttyslen, setup_terminal, add_terminal, init_ttys, free_ttys, startup_terminal, startup_ttys, find_line, restart_terminal, shutdown_terminal, reread_ttys): Move to * ttys.c: ... here, new file. * ttys.h: New file, declare external functions in ttys.c. * Makefile (SRCS): Add ttys.c. (OBJS): Derive from $(SRCS). (LCLHDRS): New variable, add ttys.h. 1999-06-05 Roland McGrath * init.c (request_dead_name): New function. (S_startup_request_notification, S_startup_essential_task): Use it. (run): Request dead-name notification for new task. (main): Request dead-name notification for FSTASK. (do_mach_notify_dead_name): If system_state is INITIAL, recognize FSTASK, AUTHTASK, PROCTASK specifically and crash with appropriate msg. 1999-06-04 Roland McGrath * init.c (launch_core_servers): Use proc_child on the proc server task to register it with itself as our child. Snarf its proc port and use proc_mark_exec do remove that unsightly `f', as we do for the other bootstrap processes. 1999-06-02 Roland McGrath * init.c (frob_kernel_process): If no --kernel-command-line option, try `getenv ("MULTIBOOT_CMDLINE")' before defaulting to "(kernel)". 1999-06-01 Roland McGrath * init.c (CRASH_FLAGS): Macro removed. (crash_flags): New variable replaces it. (crash_mach, crash_system): Use crash_flags instead of CRASH_FLAGS. (options, parse_opt): Add --crash-debug/-H, to set crash_flags to RB_DEBUGGER. * init.c (kernel_command_line): New variable. (frob_kernel_process): New function. (S_startup_essential_task): Call it after init_stdarrays. (options): Add --kernel-command-line/-K option. (parse_opt): Grok -K, set kernel_command_line. Sat Mar 6 17:13:48 1999 Thomas Bushnell, BSG * init.c (do_mach_notify_dead_name): Deallocate the extra reference to NAME that the notification carries. Tue Feb 16 18:54:33 1999 Thomas Bushnell, BSG * init.c (shutdown_terminal): Revoke access to the terminal from existing programs. 1998-10-24 Roland McGrath * init.c (main): Don't bogusly clear bootstrap_args. Reported by OKUJI Yoshinori . Tue May 12 12:03:38 1998 Thomas Bushnell, n/BSG * init.c (setup_terminal): Free LINE after done using it. (process_rc_script): Likewise free RCARGS. Both reported by Katusya Tanaka (wyvern@pb3.so-net.ne.jp). 1997-06-30 Miles Bader * init.c (bootstrap_args): Initialize to 0. (parse_opt): New function. (options, doc): New variables. (main): Parse args using argp. Include . Thu Sep 12 16:32:31 1996 Thomas Bushnell, n/BSG * Makefile (HURDLIBS): New variable. (init): Delete special target. * Makefile (mung_msg_S.h): Put rule *after* inclusion of Makeconf. Thu Sep 5 11:12:32 1996 Thomas Bushnell, n/BSG * init.c: Include . (init_version): Delete variable. (launch_core_servers): Pass empty string as release; HURD_VERSION as version. Tue Aug 13 17:51:38 1996 Miles Bader * Makefile (init): Remove -lutil. (libutil-libsubst): Variable removed. (LDLIBS): New variable. Mon Aug 12 11:12:22 1996 Thomas Bushnell, n/BSG * init.c (setup_terminal): Declare LINE. (add_terminal): Don't declare LINE. Thu Aug 8 16:34:06 1996 Thomas Bushnell, n/BSG * init.c (setup_terminal): New function. (add_terminal): Use setup_terminal. (reread_ttys): When turning an existent terminal spec on, call setup_terminal before startup_terminal. * init.c (struct terminal): New member `read'. (shutdown_terminal): New function. (reread_ttys): Use shutdown_terminal instead of doing it by hand. Keep track of which ttys we used to know about are no longer in /etc/ttys, and treat them as now `off'. * init.c (kill_everyone): `continue' in the essential task case didn't go back to the main loop; fix it up correctly. Tue Jul 16 11:55:09 1996 Michael I. Bushnell, p/BSG * init.c (process_signal): Set WUNTRACED in call to waitpid. Sun Jul 7 21:18:10 1996 Michael I. Bushnell, p/BSG * init.c (init_stdarrays): Don't use unsafe MOVE_SEND in call to interruptible proc_setexecdata. (open_console): Likewise, for file_set_translator. Wed Jul 3 14:46:41 1996 Michael I. Bushnell, p/BSG * Makefile (init): Add libports (because libfshelp.so requires it, lose lose lose). * init.c (process_signal) [case SIGCHLD]: Correctly place `break' *outside* of for loop. Mon Jul 1 18:07:56 1996 Michael I. Bushnell, p/BSG * init.c (process_signal): On SIGCHLD, keep reaping children until we get an error; tolerate all errors silently. Mon Jun 24 16:29:24 1996 Michael I. Bushnell, p/BSG * init.c (kill_multi_user): Kill user tasks before doing notify_shutdown. Fri Jun 21 16:17:08 1996 Miles Bader * init.c (open_console): Pass correct length of argument vector when setting active translators. : New include. (open_console): Print error messages for /dev/console failures. Reduce the scope of some variables. Thu Jun 20 14:51:14 1996 Michael I. Bushnell, p/BSG * init.c (mapped_time): New variable. (launch_multi_user): Initialize mapped_time. * init.c (_PATH_RUNCOM): Move to /libexec/rc. Wed Jun 19 14:49:08 1996 Michael I. Bushnell, p/BSG * init.c (run_for_real): Doc fix. (startup_terminal): Deal properly if one of the run_for_real's fails. (launch_single_user): If the shell can't be started, crash the system. (process_rc_script): Return non-zero if run_for_real fails. (process_signal) [SIGCHLD]: If process_rc_script fails, go back to single-user. (S_startup_essential_task): Likewise. (init_ttys): Return non-zero if we fail. (startup_terminal): Return non-zero if we don't actually start anything. (startup_ttys): Return non-zero if we fail. (launch_multi_user): If init_ttys fails, go back to single. If we go multi, actually set system_state accordingly. If startup_ttys fails, go back to single. (init_ttys, reread_ttys): Test return value of setttyent correctly. Mon Jun 17 14:05:33 1996 Michael I. Bushnell, p/BSG * Makefile (libutil-libsubst): Define (as -lutil); and link against -lutil. * init.c: Include , , and . (add_terminal, init_ttys, free_ttys, startup_terminal, startup_ttys, find_line, reread_ttys, restart_terminal): New functions. (launch_multi_user): Use new functions to do things right. (session_pid): Delete variable. (kill_multi_user): Call free_ttys. (process_signal) [SIGHUP]: Call reread_ttys. [SIGCHLD/MULTI]: Call restart_terminal. * init.c (run_for_real): New arg `setsid'; only do setsid if it's set. All callers changed. Return the pid of the new program, not the task port. All callers changed. * Makefile (dir): Now init. * init.c: Include "mung_msg_S.h" instead of "msg_S.h". (S_msg_sig_post, S_msg_sig_post_untraced): Include SIGCODE parm. * Makefile (mung_msg_S.h): New rule. Mon Jun 17 00:17:37 1996 Miles Bader * init.c (run_for_real, open_console, process_signal, reboot_mach, run_for_real, run, reboot_system): Use error instead of fprintf. (notify_shutdown): Always emit terminating newline. Fri Jun 14 11:07:30 1996 Michael I. Bushnell, p/BSG * init.c: Include , , , and . (S_startup_essential_task): When all core servers have showed up, call launch_single_user only if RB_SINGLE; otherwise call process_rc_script. Call init_stdarrays here. (open_console): New function; massaged guts taken from launch_single_user. Be more verbose if we do something unusual. (launch_single_user): Call open_console. Don't call init_stdarrays here. (system_state, default_ints): New variables. (main): Initialize SYSTEM_STATE and DEFAULT_INTS. (run_for_real): Pass default_ints. (run): Likewise. (S_startup_essential_task): Delete var INITDONE; use SYSTEM_STATE instead. (launch_single_user): Set SYSTEM_STATE to SINGLE. (process_rc_script): New function. (launch_multi_user): New function. (kill_everyone): New function. (kill_multi_user): New function. (do_fastboot, rc_pid, session_pid): New variables. (process_signal): New function; guts from S_msg_sig_post_untraced. Handle state transitions here when programs exit. Process SIGTERM, and SIGHUP appropriately. (_PATH_RUNCOM, _PATH_LOGIN): New macros. (S_msg_sig_post_untraced): Only validate signal here; use process_signal to do the work, but reply first. (S_msg_sig_post): Likewise. (notify_shutdown): New function. (reboot_system): Use notify_shutdown. Wed Jun 12 16:01:17 1996 Michael I. Bushnell, p/BSG * init.c (S_startup_request_notification): Fill NT->name properly. Mon May 27 11:33:53 1996 Miles Bader * init.c (launch_single_user): Open TERM RDWR. Use openport to get FD from TERM. Print errno on assertion failure for FD. Fri May 24 12:29:20 1996 Michael I. Bushnell, p/BSG * init.c (reboot_mach): Insert a brief pause before actually rebooting the kernel so that the user has a chance to see any messages that may be displayed. Tue May 14 11:26:49 1996 Michael I. Bushnell, p/BSG * init.c (S_msg_get_exec_flags, S_msg_set_all_exec_flags, S_msg_set_some_exec_flags, S_msg_clear_some_exec_flags): Delete functions. (S_msg_describe_ports): New function. * init.c (reboot_system): Print prettier messages for shutdown notifications. Fri May 10 09:25:16 1996 Michael I. Bushnell, p/BSG * init.c: -> "startup_notify_U.h". * Makefile (OBJS): Add startup_notifyUser.o. Thu May 9 19:03:24 1996 Michael I. Bushnell, p/BSG * init.c (struct ntfy_task): New member `name'. (S_startup_request_notification): Expect and record name. (S_msg_startup_dosync): Delete function. Include . (reboot_system): Use new startup_dosync interface. * init.c (init_stdarrays): Use new authentication interface. Mon May 6 14:25:02 1996 Michael I. Bushnell, p/BSG * init.c (init_version): Upgrade to 0.0. Mon Apr 29 16:49:18 1996 Michael I. Bushnell, p/BSG * init.c (reboot_system): Not quite yet, though. Sun Apr 28 19:15:30 1996 Roland McGrath * init.c (reboot_system): Use 1 minute timeout on reply to msg_startup_dosync. Wed Apr 17 17:06:30 1996 Miles Bader * init.c (launch_single_user): Set an active, not passive, translator on /tmp/console, so it works with / read-only. * Makefile (init): Depend on libfshelp. Mon Mar 25 16:55:22 1996 Michael I. Bushnell, p/BSG * Makefile (init): Add explicit dependency so that libshouldbeinlibc is included. * init.c: Include . (main): Delete declarations of _etext _edata, and __data_start. (main): Use new wire_task_self function instead of doing it ourselves. Tue Dec 19 18:29:19 1995 Roland McGrath * init.c (launch_core_servers, run_for_real): Call proc_mark_exec on child proc ports. Tue Dec 5 15:22:25 1995 Michael I. Bushnell, p/BSG * init.c (launch_single_user): Change initialization of TERMINAL to match new term driver arg syntax. Start terminal as ordinary passive translator instead of special weird kludge. Deleted variables foobiebletchcount, foobiebletch, and termtask. Sun Nov 5 02:03:33 1995 Miles Bader * init.c (reboot_system): Add flags, noise, & noise_len params to proc_getprocinfo. Deallocate NOISE if necessary. (S_msg_report_wait): New function. Tue Oct 24 16:49:08 1995 Roland McGrath * init.c: Undo last change of 9Oct95. Mon Oct 9 04:29:39 1995 Roland McGrath * init.c: Pass dealloc args in file_exec calls. Thu Jul 6 15:34:23 1995 Michael I Bushnell * init.c (S_msg_sig_post, S_msg_sig_post_untraced): Reverse order of these definitions. * init.c: Include . (reboot_mach): Insert extra parens around assignment inside while test. (launch_core_servers): Remove assignment from inside if test. * Makefile: Removed dependencies that are now automatically generated. Thu Feb 9 17:18:21 1995 Michael I Bushnell * init.c (S_msg_sig_post_untraced): Omit obnoxious "random child died" messages. Sat Jan 28 15:00:37 1995 Roland McGrath * init.c: Include "msg_S.h". Prepend `msg_' to msg.defs server functions. Add stubs for new msg.defs functions. Thu Jan 19 01:59:30 1995 Roland McGrath * init.c: Prepend `msg_' to names of msg.defs RPCs. Mon Nov 28 15:00:42 1994 Roland McGrath * init.c (run_for_real): Print error msg if file_exec fails. (shell_pid): New variable. (demuxer): Also try msg_server. (launch_single_user): Open terminal O_RDWR and dup to 0, 1, 2. Set shell_pid after starting shell. (S_sig_post): New function; grok SIGCHLD and restart shell if shell_pid dies. * Makefile (OBJS): Add msgServer.o. (init.o): Depend on msg_S.h. Fri Nov 11 14:06:43 1994 Michael I Bushnell * init.c (fakeboot): New variable. (STANDALONE): Deleted macro. (main): Set FAKEBOOT if -f was passed. (reboot_mach): Use FAKEBOOT flag instead of STANDALONE macro. (launch_core_servers): Likewise. (reboot_system): Likewise. Also don't exit here; let reboot_mach exit. Tue Nov 1 04:13:49 1994 Roland McGrath * init.c (main): Use &_start for start of text to wire. (main): Use assert_perror in place of `assert (!err)'. (launch_single_user): Use _PATH_CONSOLE and _PATH_BSHELL instead of hardcoded strings. Check for error from io_stat on console, print message. Add #if 0'd code to prompt for shell name. Tue Sep 6 13:09:40 1994 Michael I Bushnell * init.c (launch_single_user): Don't run device or pipes servers by default. Run terminal server inside /tmp if /dev/console isn't set up properly. Wed Aug 31 01:03:51 1994 Roland McGrath * init.c (launch_single_user): Test TERMTASK as port, not boolean; if null, properly initialize TERM to MACH_PORT_NULL as well. Tue Aug 30 17:07:07 1994 Michael I Bushnell * init.c: Include . * init.c (run): Use file_name_lookup instead of path_lookup. (launch_single_user): Likewise. (run_for_real): Likewise. * init.c (init_stdarrays): Use new authentication protocol. Mon Aug 22 16:44:11 1994 Michael I Bushnell * init.c (run_for_real): If CTTY is set, then also put the process in its own login collection. Fri Aug 19 12:16:47 1994 Michael I Bushnell * init.c (run_for_real): New arg `ctty'. All callers changed. If it's set, then set the new process's INIT_PORT_CTTYID accordingly, and change CTTY's owner to be the new process pgrp. (launch_single_user): Don't free TERM right away, only do it after we've passed it to run_for_real on the shell. Thu Aug 18 16:48:08 1994 Michael I Bushnell * init.c (main): Print informative bootstrap messages. (launch_core_servers): Likewise. (launch_single_user): Likewise. (run): Don't print meaningless bootstrap clutter. * init.c (launch_single_user): Use task_info; it's less intrusive than task_suspend/task_resume. * init.c (launch_single_user): Run pipes before shell. * init.c (launch_single_user): Pause a bit to give term a chance to startup. * init.c (bootstrap_args): New variable. (main): Set `bootstrap_args' appropriately from argv[1]. (prompt_for_servers): Deleted variable. (run): Use RB_INITNAME instead of prompt_for_servers. Only do `pausing' hack if RB_KDB is set. (run_for_real): Likewise. * init.c (main): Wire text and data segment soon after starting. Wed Aug 17 19:20:51 1994 Roland McGrath * init.c (run_for_real): Call proc_setsid on new proc. Wed Aug 17 14:04:18 1994 Michael I Bushnell * init.c (init_stdarrays): New function. (launch_single_user): Call init_stdarrays. Tue Aug 16 00:44:20 1994 Roland McGrath * init.c (launch_single_user): Prompt whether to run term or dev. * init.c (main): Set default_ports[INIT_PORT_BOOTSTRAP] to STARTUP while running proc and auth, and then reset it to null. Mon Aug 15 23:16:24 1994 Roland McGrath * init.c (launch_single_user): Use a volatile var to choose dev or term, so you can set it in gdb. (main): Set bootstrap port to MACH_PORT_NULL after fetching it. Don't set default_ports[INIT_PORT_BOOTSTRAP]; it should be nil. Mon Aug 15 11:40:34 1994 Michael I Bushnell * init.c (launch_core_servers): Renamed from launch_system. Don't start dev, term, pipes, or shell here. (S_startup_procinit): Call launch_core_servers instead of launch_system. (S_startup_authinit): Likewise. (launch_single_user): New function. (S_startup_essential_task): Call launch_single_user once all the core servers have registered themselves here. Fri Aug 12 14:05:07 1994 Michael I Bushnell * init.c (launch_system): Comment out use of dev for now. Thu Aug 11 12:25:32 1994 Michael I Bushnell * init.c (launch_system): Run dev instead of term. Thu Jul 21 17:45:45 1994 Michael I Bushnell * Makefile: Rewritten in accord with new scheme. * init.c: Include "startup_reply_U.h instead of "startup_reply.h". (demuxer): Remove S_ from references to startup_server. Tue Jul 19 20:36:30 1994 Roland McGrath (roland@churchy.gnu.ai.mit.edu) * init.c (run_for_real): Moved unused var BUF inside #if 0 where used. (launch_system): Call proc_set_arg_locations, not proc_setprocargs. Tue Jul 19 12:44:56 1994 Michael I Bushnell (mib@churchy.gnu.ai.mit.edu) * Makefile (init): Don't use variable $(link) anymore. Tue Jul 5 14:21:34 1994 Michael I Bushnell (mib@churchy.gnu.ai.mit.edu) * init.c (launch_system): After terminal driver is running, reopen stdin so that we always read through it. Don't do output, because that (for reliability) shouldn't depend on the terminal driver. (main): Open stdin separately from stdout/stderr. * Makefile (SRCS): New variable. Fri Jul 1 11:19:46 1994 Michael I Bushnell (mib@churchy.gnu.ai.mit.edu) * init.c (run_for_real): Return the task we created. All callers changed. Tue Jun 21 14:08:37 1994 Michael I Bushnell (mib@churchy.gnu.ai.mit.edu) * init.c (launch_system): Correct first arg to pipes. Mon Jun 20 15:06:19 1994 Michael I Bushnell (mib@churchy.gnu.ai.mit.edu) * init.c (launch_system): Look for pipes in /hurd/pipes, not /bin/pipes. * init.c (run_for_real): Comment out old code that prompts user; abandon attempt if we can't run something. * Makefile (install): Use $(INSTALL_BIN) instead of cp. Fri Jun 17 00:13:50 1994 Roland McGrath (roland@geech.gnu.ai.mit.edu) * init.c (demuxer): Use S_startup_server instead of startup_server. Wed Jun 15 18:14:59 1994 Michael I Bushnell (mib@geech.gnu.ai.mit.edu) * init.c (launch_system): Start pipes server after starting shell. * init.c (run_for_real): New parms ARGS and ARGLEN. All callers changed. Tue May 24 02:20:55 1994 Roland McGrath (roland@churchy.gnu.ai.mit.edu) * init.c (launch_system): Start the shell before doing proc_setmsgport. Tue May 24 00:05:43 1994 Michael I Bushnell (mib@churchy.gnu.ai.mit.edu) * init.c (launch_system): Call proc_setmsgport before fsys_init. Mon May 16 14:43:47 1994 Michael I Bushnell (mib@churchy.gnu.ai.mit.edu) * init.c (reboot_system): Restore bits commented out on May 12; the proc bug responsible has been fixed. Fri May 13 14:59:12 1994 Michael I Bushnell (mib@churchy.gnu.ai.mit.edu) * init.c (launch_system): Make sure the auth server's proc state is correct *before* calling startup_authinit_reply. Thu May 12 15:13:10 1994 Michael I Bushnell (mib@geech.gnu.ai.mit.edu) * init.c (reboot_system): Comment out bits checking to see if the procserver has died; they aren't quite right. * init.c (S_startup_essential_task): Don't take over the exception port of the task right now; this interferes with things too much. Thu May 12 02:22:08 1994 Roland McGrath (roland@churchy.gnu.ai.mit.edu) * init.c (launch_system): Don't call _hurd_proc_init; just call proc_setprocargs ourselves. (launch_system): Do proc_setmsgport last. (run, run_for_real): Pass argv[0] with name of program. Mon May 9 14:30:11 1994 Michael I Bushnell (mib@geech.gnu.ai.mit.edu) * init.c (init_version): New variable. (launch_system): Call proc_register_version; don't call proc_setprocargs (which is done by _hurd_proc_init). Give correct argument to _hurd_proc_init. * init.c (S_startup_register_version, S_startup_uname): Deleted. Fri May 6 13:01:04 1994 Michael I Bushnell (mib@geech.gnu.ai.mit.edu) * init.c (S_startup_register_version, S_startup_uname): New functions (temporary only). Thu May 5 19:15:39 1994 Michael I Bushnell (mib@geech.gnu.ai.mit.edu) * init.c: Include for prototype of startup_dosync. Change return types of MiG stubs to be kern_return_t. (S_startup_essential_task): Expect new arg CREDENTIAL and validate it. Thu May 5 07:44:21 1994 Roland McGrath (roland@churchy.gnu.ai.mit.edu) * Makefile: Change uses of $(headers) to $(includedir).