diff options
-rw-r--r-- | sutils/swapon.c | 3 | ||||
-rw-r--r-- | tmpfs/tmpfs.c | 18 |
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"); |