summaryrefslogtreecommitdiff
path: root/mach-defpager
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2022-12-03 19:31:59 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2022-12-03 19:31:59 +0100
commit669b941256fbf4c5acaf4d7a2f3ce07c66e0496c (patch)
tree448be51907ef37e62a257e2628920bad44da993e /mach-defpager
parent9ce2bd90d6ee3f4128b32f9db0704285e2010afa (diff)
mach-defpager: Mark as essential
So we get to know why the system gets stuck if mach-defpager happens to die.
Diffstat (limited to 'mach-defpager')
-rw-r--r--mach-defpager/main.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/mach-defpager/main.c b/mach-defpager/main.c
index 0e42040b..69f83a58 100644
--- a/mach-defpager/main.c
+++ b/mach-defpager/main.c
@@ -42,6 +42,7 @@
#include <hurd.h>
#include <hurd/port.h>
#include <hurd/fd.h>
+#include <hurd/paths.h>
/* XXX */
#include "default_pager.h"
@@ -141,6 +142,18 @@ main (int argc, char **argv)
mach_port_deallocate (mach_task_self (), proc);
+ /* Mark us as essential. */
+ mach_port_t startup;
+ startup = file_name_lookup (_SERVERS_STARTUP, 0, 0);
+ if (startup == MACH_PORT_NULL)
+ error (0, errno, "WARNING: Cannot register as essential task\n");
+
+ startup_essential_task (startup, mach_task_self (), MACH_PORT_NULL,
+ program_invocation_short_name,
+ bootstrap_master_host_port);
+
+ mach_port_deallocate (mach_task_self (), startup);
+
printf_init(bootstrap_master_device_port);
/*