summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2021-06-14 09:28:58 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2021-06-14 09:29:00 +0200
commit1eca90cc1aea3fc5252506e04dd21290e144e38c (patch)
treecedb031f424ea72b226129ab168fec345c578baa
parentc0e059c762920c3d93cbda982aee821b037f2ebe (diff)
complete bootstrap
-rw-r--r--hurd/bootstrap.mdwn52
1 files changed, 34 insertions, 18 deletions
diff --git a/hurd/bootstrap.mdwn b/hurd/bootstrap.mdwn
index 886795ad..844b70f1 100644
--- a/hurd/bootstrap.mdwn
+++ b/hurd/bootstrap.mdwn
@@ -242,41 +242,57 @@ give ext2fs the proc and auth ports.
# libdiskfs taking back control
diskfs' `diskfs_S_fsys_init` thus gets called, it thus knows that proc and auth
-are ready, and can call `exec_init` on the exec port. It also calls `fsys_init`
-on its bootstrap port, i.e. rumpdisk.
+are ready, and can call `exec_init` on the exec port.
-It initializes the default proc and auth ports to be given to processes.
+# exec getting initialized
-diskfs calls `startup_essential_task` on the startup port to tell startup that
-it is ready.
+exec's `S_exec_init` gets called from the `exec_init` call from ext2fs. Exec can
+register itself with proc, and eventually call `startup_essential_task` to tell
+startup that it is ready.
-Eventually, it calls `_diskfs_init_completed` to finish its initialization, and
-notably call `startup_request_notification` to get notified by startup when the
-system is shutting down.
+# back to libdiskfs initialization
+
+It also calls `fsys_init`
+on its bootstrap port, i.e. rumpdisk.
# rumpdisk getting initialized
rumpdisk's `trivfs_S_fsys_init` gets called from the `fsys_init` call from
-ext2fs. It gets the root node of ext2fs, sets all common ports, and install
-rumpdisk in the ext2fs FS as translator for `/dev/disk`.
-
-TODO: rumpdisk calls `fsys_init` on its bootstrap port, i.e. pci-arbiter.
+ext2fs. It calls `fsys_init` on its bootstrap port.
# pci-arbiter getting initialized
pci-arbiter's `trivfs_S_fsys_init` gets called from the `fsys_init` call from
-rumpdisk. It gets the root node of ext2fs, sets all common ports, and install
+rumpdisk.
+
+It gets the root node of ext2fs, sets all common ports, and install
pci-arbiter in the ext2fs FS as translator for `/servers/bus/pci`.
-# exec getting initialized
+It eventually calls `startup_essential_task` to tell startup that it is ready,
+and requests shutdown notifications.
-exec's `S_exec_init` gets called from the `exec_init` call from ext2fs. Exec can
-register itself with proc, and eventually call `startup_essential_task` to tell
-startup that it is ready.
+# back to rumpdisk initialization
+
+It gets the root node of ext2fs, sets all common ports, and install
+rumpdisk in the ext2fs FS as translator for `/dev/disk`.
+
+It eventually calls `startup_essential_task` to tell startup that it is ready,
+and requests shutdown notifications.
+
+# back to libdiskfs initialization
+
+It initializes the default proc and auth ports to be given to processes.
+
+It calls `startup_essential_task` on the startup port to tell startup that
+it is ready.
+
+Eventually, it calls `_diskfs_init_completed` to finish its initialization, and
+notably call `startup_request_notification` to get notified by startup when the
+system is shutting down.
# startup monitoring bootstrap progress
-As mentioned above, the different essential tasks (ext2fs, proc, auth, exec)
+As mentioned above, the different essential tasks (pci-arbiter, rumpdisk, ext2fs, proc, auth, exec)
call `startup_essential_task` when they are ready. startup's
`S_startup_essential_task` function thus gets called each time, and startup
records each of them as essential, monitoring their death to crash the whole