summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sutils/swapon.c3
-rw-r--r--tmpfs/tmpfs.c18
2 files changed, 18 insertions, 3 deletions
diff --git a/sutils/swapon.c b/sutils/swapon.c
index b699b933..9f0b0163 100644
--- a/sutils/swapon.c
+++ b/sutils/swapon.c
@@ -110,7 +110,6 @@ static void get_def_pager(int autostart)
error (12, err, "Cannot get privileged ports");
err = vm_set_default_memory_manager (host, &def_pager);
- mach_port_deallocate (mach_task_self (), host);
if (err)
error (13, err, "Cannot get default pager port");
if (def_pager == MACH_PORT_NULL)
@@ -127,12 +126,12 @@ static void get_def_pager(int autostart)
{
fprintf (stderr, "Started it\n");
err = vm_set_default_memory_manager (host, &def_pager);
- mach_port_deallocate (mach_task_self (), host);
if (err)
error (16, err, "Cannot get default pager port");
}
}
}
+ mach_port_deallocate (mach_task_self (), host);
}
}
diff --git a/tmpfs/tmpfs.c b/tmpfs/tmpfs.c
index 08356803..ad5e2983 100644
--- a/tmpfs/tmpfs.c
+++ b/tmpfs/tmpfs.c
@@ -364,9 +364,25 @@ main (int argc, char **argv)
else
{
err = vm_set_default_memory_manager (host_priv, &default_pager);
- mach_port_deallocate (mach_task_self (), host_priv);
if (err)
error (0, err, "Cannot get default pager port");
+ else
+ if (default_pager == MACH_PORT_NULL)
+ {
+ error (0, 0, "No default pager (memory manager) is running");
+ /* Try to auto-start it. */
+ err = system ("/hurd/mach-defpager");
+ if (err)
+ error (0, err, "Could not start it");
+ else
+ {
+ fprintf (stderr, "Started it\n");
+ err = vm_set_default_memory_manager (host_priv, &default_pager);
+ if (err)
+ error(0, err, "Cannot get default pager port");
+ }
+ }
+ mach_port_deallocate (mach_task_self (), host_priv);
}
if (default_pager == MACH_PORT_NULL)
error (0, 0, "files cannot have contents with no default pager port");