[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[PATCH 10/16] libtrivfs: register libtrivfs-based translators as important



Register libtrivfs-based translators running as root as important
processes at the proc server.

* libtrivfs/startup.c (trivfs_startup): Mark us as important.
---
 libtrivfs/startup.c |   19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/libtrivfs/startup.c b/libtrivfs/startup.c
index 86b0f82..e7be67a 100644
--- a/libtrivfs/startup.c
+++ b/libtrivfs/startup.c
@@ -65,5 +65,24 @@ trivfs_startup(mach_port_t bootstrap, int flags,
   if (!err && control)
     *control = fsys;
 
+  /* Mark us as important.  */
+  if (! err)
+    {
+      mach_port_t proc = getproc ();
+      if (proc == MACH_PORT_NULL)
+	/* /hurd/exec uses libtrivfs.  We have no handle to the proc
+	   server in /hurd/exec when it does its handshake with the
+	   root filesystem, so fail graciously here.  */
+	return 0;
+
+      err = proc_mark_important (proc);
+      /* This might fail due to permissions, ignore any such
+	 errors.  */
+      if (err == EPERM)
+	err = 0;
+
+      mach_port_deallocate (mach_task_self (), proc);
+    }
+
   return err;
 }
-- 
1.7.10.4


Reply to: