summaryrefslogtreecommitdiff
path: root/libmachdev/trivfs_server.c
diff options
context:
space:
mode:
Diffstat (limited to 'libmachdev/trivfs_server.c')
-rw-r--r--libmachdev/trivfs_server.c31
1 files changed, 14 insertions, 17 deletions
diff --git a/libmachdev/trivfs_server.c b/libmachdev/trivfs_server.c
index bbd73555..029a8da7 100644
--- a/libmachdev/trivfs_server.c
+++ b/libmachdev/trivfs_server.c
@@ -289,17 +289,26 @@ trivfs_S_fsys_init (struct trivfs_control *fsys,
retry_type retry;
string_t retry_name;
mach_port_t right = MACH_PORT_NULL;
- process_t proc, parent_proc;
/* Traverse to the bootstrapping server first */
task_get_bootstrap_port (mach_task_self (), &bootstrap);
if (bootstrap)
{
+ process_t parent_proc;
err = proc_task2proc (procserver, parent_task, &parent_proc);
assert_perror_backtrace (err);
+
+ /* We don't need this anymore. */
+ mach_port_deallocate (mach_task_self (), parent_task);
+ parent_task = MACH_PORT_NULL;
+
+ proc_mark_exec(parent_proc);
+
err = fsys_init (bootstrap, parent_proc, MACH_MSG_TYPE_COPY_SEND, authhandle);
assert_perror_backtrace (err);
+
+ mach_port_deallocate (mach_task_self (), parent_proc);
}
err = fsys_getroot (control_port, MACH_PORT_NULL, MACH_MSG_TYPE_COPY_SEND,
idlist, 3, idlist, 3, 0,
@@ -322,18 +331,6 @@ trivfs_S_fsys_init (struct trivfs_control *fsys,
_hurd_libc_proc_init(machdev_argv);
#endif
- /* Mark us as important. */
- proc = getproc ();
- assert_backtrace (proc);
- err = proc_mark_important (proc);
- if (err && err != EPERM)
- assert_perror_backtrace (err);
- err = proc_mark_exec (proc);
- assert_perror_backtrace (err);
- err = proc_set_exe (proc, program_invocation_short_name);
- assert_perror_backtrace (err);
- mach_port_deallocate (mach_task_self (), proc);
-
if (bootstrapping)
{
if (devnode)
@@ -493,7 +490,7 @@ machdev_trivfs_init(int argc, char **argv, mach_port_t bootstrap_resume_task,
return 0;
}
-/* The system is going down. Sync data, then call trivfs_goaway() */
+/* The system is going down, sync data. */
error_t
S_startup_dosync (mach_port_t handle)
{
@@ -505,10 +502,10 @@ S_startup_dosync (mach_port_t handle)
ports_port_deref (inpi);
- /* Sync and close device(s) */
- machdev_device_shutdown (handle);
+ /* Sync device(s) */
+ machdev_device_sync ();
- return trivfs_goaway (NULL, FSYS_GOAWAY_FORCE);
+ return 0;
}
error_t