Age | Commit message (Collapse) | Author |
|
This patch adds a minimalist init program. It is somewhat lacking in
features, but is able to bring up a Hurd system with the runsystem and
rc scripts. In fact, it roughly does what the former /hurd/init did,
modulo all the very early bootstrapping stuff and the startup
protocol. It is started when all the essential servers are up and
running, so it can make use of most of the POSIX goodies, making its
implementation much simpler.
* Makefile (prog-subdirs): Add init.
* daemons/runsystem.sh: Generalize runsystem so that it can start any
init as specified on the kernel command line. By default, it starts
/hurd/init.
* daemons/runsystem.hurd: This is a verbatim copy of runsystem.sh. It
is started by /hurd/init.
* daemons/rc.sh: Do not start /hurd/mach-defpager as it is already
started in runsystem.sh.
* daemons/Makefile (SRCS): Add runsystem.hurd.
* init/Makefile: New file.
* init/init.c: Likewise.
|
|
This patch series splits /hurd/init into two programs. As a first
step, this patch renames /hurd/init to /hurd/startup. It is called
startup because it speaks the startup protocol.
* startup: Rename init to startup. Adjust accordingly.
* Makefile (prog-subdirs): Likewise.
* doc/hurd.texi (Server Bootstrap): Likewise.
* hurd/paths.h (_HURD_STARTUP): Likewise.
* libdiskfs/boot-start.c (diskfs_boot_init_program): Likewise.
* libdiskfs/opts-std-startup.c (startup_options): Likewise.
|
|
* hurd/process.defs (proc_set_init_task): New procedure.
* hurd/process_reply.defs (proc_set_init_task): Likewise.
* hurd/process_request.defs (proc_set_init_task): Likewise.
* include/pids.h: Add HURD_PID_INIT as 1, adjust others accordingly.
* init/init.c (start_child): Register the child task.
* proc/proc.h (init_proc): New variable.
(create_startup_proc): Rename to create_init_proc.
* proc/main.c (main): Create placeholder proc object for pid 1.
* proc/mgt.c: Use init_proc instead of startup_proc, as the former is
the new root of the process tree.
(create_startup_proc): Rename to create_init_proc.
(S_proc_set_init_task): New function.
* doc/hurd.texi (Server Bootstrap): Update accordingly.
* procfs/main.c: Do not hard-code kernel pid, use pids.h instead.
|
|
* init/init.c (S_startup_essential_task): Fix port leak.
|
|
Found using the Clang Static Analyzer.
* init/init.c (process_signal): Fix memory leak.
|
|
This is based on a fragment of Guillem Jovers patch presented here:
http://lists.gnu.org/archive/html/bug-hurd/2006-02/msg00081.html
It has been refreshed, updated and the copyright year is adjusted
properly. It has been complemented with the necessary features to
address the issues the original patch set out to address, namely
that killall5 freezes the proc translator before it tries to walk
over /proc/*/stat to decide which process to kill. Prior to this
patch (and the one marking the procfs server as important
process), killall5 would deadlock trying to walk over the proc
file system.
Ironically it would not have killed any process later on even if
it had the chance, since two values obtained from /proc/*/stat
are currently hardcoded to zero in our procfs. Patches addressing
the problem as a whole are prepared and will be sent as a follow
up.
* init/init.c (launch_core_servers): Mark init, auth, proc and fs
servers as important.
(start_child): Mark the real init as important.
(S_startup_important_task): Mark exec server as important.
|
|
* include/pids.h: New file.
* init/init.c (frob_kernel_process): Use symbolic name for kernel process.
* exec/exec.c (S_exec_init): Use symbolic name for startup process.
* libdiskfs/boot-start.c (diskfs_S_fsys_init): Likewise.
* libdiskfs/init-startup.c (_diskfs_init_completed): Likewise.
* pfinet/main.c (arrange_shutdown_notification): Likewise.
* proc/mgt.c (create_startup_proc): Likewise.
* proc/main.c (main): Use symbolic name for proc process.
|
|
* init/init.c (start_child): Don't free `arg' before it is used.
|
|
* init/init.c (launch_something): Check with file_name_lookup that runsystem
script exists before calling start_child.
* daemons/console-run.c (main): Check with file_name_lookup that runsystem
script exists before opening a console for it.
|
|
init/init.c (S_msg_sig_post_untraced): Ignore result of
msg_sig_post_untraced_reply.
(S_msg_sig_post): Likewise.
|
|
* auth/auth.c (S_auth_server_authenticate): Check result of
auth_server_authenticate_reply stub.
* init/init.c (S_msg_sig_post_untraced): Check result of
msg_sig_post_untraced_reply
(S_msg_sig_post): Check result of msg_sig_post_reply.
|
|
* ChangeLog: Wipe out content, and add instructions about how to get it back.
* auth/ChangeLog: Remove file.
* benchmarks/ChangeLog: Likewise.
* boot/ChangeLog: Likewise.
* bsdfsck/ChangeLog: Likewise.
* config/ChangeLog: Likewise.
* console-client/ChangeLog: Likewise.
* console/ChangeLog: Likewise.
* daemons/ChangeLog: Likewise.
* defpager/ChangeLog: Likewise.
* doc/ChangeLog: Likewise.
* exec/ChangeLog: Likewise.
* ext2fs/ChangeLog: Likewise.
* fatfs/ChangeLog: Likewise.
* fstests/ChangeLog: Likewise.
* ftpfs/ChangeLog: Likewise.
* hostmux/ChangeLog: Likewise.
* hurd/ChangeLog: Likewise.
* include/ChangeLog: Likewise.
* init/ChangeLog: Likewise.
* isofs/ChangeLog: Likewise.
* libcons/ChangeLog: Likewise.
* libdirmgt/ChangeLog: Likewise.
* libdiskfs/ChangeLog: Likewise.
* libfshelp/ChangeLog: Likewise.
* libftpconn/ChangeLog: Likewise.
* libhurdbugaddr/ChangeLog: Likewise.
* libihash/ChangeLog: Likewise.
* libiohelp/ChangeLog: Likewise.
* libnetfs/ChangeLog: Likewise.
* libpager/ChangeLog: Likewise.
* libpipe/ChangeLog: Likewise.
* libports/ChangeLog: Likewise.
* libps/ChangeLog: Likewise.
* libshouldbeinlibc/ChangeLog: Likewise.
* libstore/ChangeLog: Likewise.
* libthreads/ChangeLog: Likewise.
* libtrivfs/ChangeLog: Likewise.
* login/ChangeLog: Likewise.
* mach-defpager/ChangeLog: Likewise.
* nfs/ChangeLog: Likewise.
* nfsd/ChangeLog: Likewise.
* pfinet/ChangeLog: Likewise.
* pflocal/ChangeLog: Likewise.
* proc/ChangeLog: Likewise.
* release/ChangeLog: Likewise.
* serverboot/ChangeLog: Likewise.
* storeio/ChangeLog: Likewise.
* sutils/ChangeLog: Likewise.
* term/ChangeLog: Likewise.
* tmpfs/ChangeLog: Likewise.
* trans/ChangeLog: Likewise.
* ufs-fsck/ChangeLog: Likewise.
* ufs-utils/ChangeLog: Likewise.
* ufs/ChangeLog: Likewise.
* usermux/ChangeLog: Likewise.
* utils/ChangeLog: Likewise.
|
|
|
|
|
|
|
|
* init.c (main): Only pass ARGP_NO_ERRS to argp_parse when invoked
by the bootstrap filesystem.
(flags): New variable.
|
|
|
|
* init.c (reboot_system): u_int -> size_t
(reboot_system): Likewise.
(S_msg_report_wait): int -> mach_msg_id_t
|
|
|
|
* init.c (reboot_mach): Use ERR, not errno.
(run): Likewise.
(lauch_core_servers): Likewise.
(run_for_real): Use MACH_PORT_NULL explicitly.
(start_child): Likewise.
|
|
|
|
* init.c [KERN_INVALID_LEDGER]:
Pass extra arguments to task_create for OSF variant.
|
|
|
|
* init.c (main): Pass ARGP_NO_ERRS|ARGP_IN_ORDER to argp_parse.
|
|
* init.c [! SPLIT_INIT]: All this code removed.
[SPLIT_INIT]: This code no longer conditional.
(_PATH_RUNCOM, mapped_time, do_fastboot): Removed.
* Makefile (split-init): Variable removed.
(SRCS): Add stubs.c here unconditionally.
[$(split-init) = no]: Conditional defns removed.
(LCLHDRS): Variable removed.
* ttys.c, ttys.h: Files removed.
|
|
* init.c [! SPLIT_INIT]: All this code removed.
[SPLIT_INIT]: This code no longer conditional.
(_PATH_RUNCOM, mapped_time, do_fastboot): Removed.
* Makefile (split-init): Variable removed.
(SRCS): Add stubs.c here unconditionally.
[$(split-init) = no]: Conditional defns removed.
(LCLHDRS): Variable removed.
* ttys.c, ttys.h: Files removed.
|
|
|
|
* init.c (kernel_command_line): Variable removed.
(options, parse_opt): Remove -K option.
(frob_kernel_process): Collect arguments from &global_argv[1]
instead of slicing up kernel_command_line.
(start_child): Take a second arg, if non-null more arguments for PROG.
(launch_something): Change caller. On first try, pass &global_argv[1].
|
|
|
|
* init.c (reboot_system): Don't pass null pointer to RPC out param.
Thanks to Moritz Schulte <moritz@chaosdorf.de> for finding this.
|
|
2001-01-17 Neal H Walfield <neal@cs.uml.edu>
* console-run.c (open_console): Conform to new
fshelp_start_translator semantics.
init/
2001-01-17 Neal H Walfield <neal@cs.uml.edu>
* init.c (open_console): Conform to new fshelp_start_translator
semantics.
libfshelp/
2001-01-17 Neal H Walfield <neal@cs.uml.edu>
* fshelp.h: Add two new parameters to fshelp_open_fn_t:
a port to the new task and a cookie.
Add a new parameter, cookie, to fshelp_start_translator and
fshelp_start_translator_long that will be passed to
fshelp_open_fn_t.
* fetch-root.c (fshelp_fetch_root): Conform to new
fshelp_start_translator_long semantics.
* start-translator-long.c (service_fsys_startup): Likewise.
(fshelp_start_translator_long): Likewise.
* start-translator.c (fshelp_start_translator): Likewise.
libtreefs/
Conform to new fshelp_start_translator semantics.
trans/
2001-01-17 Neal H Walfield <neal@cs.uml.edu>
* pump.c (start_pfinet): Conform to new fshelp_start_translator
semantics.
utils/
2001-01-17 Neal H Walfield <neal@cs.uml.edu>
* mount.c (do_mount): Conform to new fshelp_start_translator
semantics.
* settrans.c (main): Conform to new fshelp_start_translator
semantics therby allowing us to print the pid of the an
active translator.
|
|
* init.c (process_rc_script): If malloc fails, return ENOMEM.
Reported by Igor Khavkine <i_khavki@alcor.concordia.ca>.
|
|
* init.c (launch_core_servers): Don't use MOVE_SEND in Hurd RPCs.
|
|
|
|
* stubs.c (send_signal): Don't use mach_msg_destroy, since it wants
the local/remote ports reversed. Destroy the rights by hand instead.
|
|
|
|
* stubs.c (send_signal): Make MESSAGE auto instead of static.
Take new argument TIMEOUT, passed to mach_msg instead of zero.
(send_signal): For MACH_SEND_TIMED_OUT failure, destroy the
pseudo-received message to avoid leaking send rights.
* init.c (process_signal): Pass new argument, timeout of 500 ms.
|
|
* init.c (frob_kernel_process): Allocate the kernel's page in the
actual kernel task, not in our own. I wonder how this ever
worked. Also if we fail in that allocation, free the page we
allocated in our own space.
|
|
|
|
* init.c (notify_shutdown): Add const to argument type.
|
|
|
|
* Makefile (split-init): Set to `yes' by default.
|
|
* init.c (frob_kernel_process): Use mmap instead of vm_allocate.
|
|
|
|
* init.c: Add #include <sys/mman.h> for munmap decl.
|
|
* init.c (reboot_system): Use munmap instead of vm_deallocate.
(frob_kernel_process): Likewise.
(kill_everyone): Likewise.
|
|
|
|
* Makefile (HURDLIBS): Add ports and fshelp only if $(split-init)!=yes.
|
|
* init.c (open_console): Put this function inside [! SPLIT_INIT].
|
|
|