bug-hurd
[Top][All Lists]
Advanced

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

[PATCH 4/4] rumpdisk: Install as translator when bootstrapping


From: Damien Zammit
Subject: [PATCH 4/4] rumpdisk: Install as translator when bootstrapping
Date: Tue, 28 Jul 2020 20:08:37 +1000

NB: Not sure why this seems to have no effect on /dev/rumpdisk
    Am I setting the translator on the wrong port?

---
 rumpdisk/main.c | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/rumpdisk/main.c b/rumpdisk/main.c
index 27a8ea38..68fb8be2 100644
--- a/rumpdisk/main.c
+++ b/rumpdisk/main.c
@@ -31,6 +31,8 @@
 #include <pthread.h>
 #include <mach.h>
 
+#define DEV_RUMPDISK   "/dev/rumpdisk"
+
 /* TODO: Add api to pciaccess to allow selecting backend.
  * For now we pretend to be the arbiter and claim x86 method.
  */
@@ -97,6 +99,28 @@ static struct argp_child empty_argp_children[] = {{0}};
 static struct argp rumpdisk_argp = {options, parse_opt, 0, 0, 
empty_argp_children};
 static const struct argp *rumpdisk_argp_bootup = &rumpdisk_argp;
 
+static void
+install_as_translator (mach_port_t rumpdisk_port)
+{
+  error_t err;
+  file_t node;
+
+  node = file_name_lookup (DEV_RUMPDISK, O_NOTRANS, 0);
+  if (! MACH_PORT_VALID (node))
+    {
+      if (errno == ENOENT)
+        mach_print("Missing DEV_RUMPDISK\n");
+      return;
+    }
+
+  err = file_set_translator (node,
+                             0, FS_TRANS_SET, 0,
+                             NULL, 0,
+                             rumpdisk_port, MACH_MSG_TYPE_COPY_SEND);
+  mach_port_deallocate (mach_task_self (), node);
+  assert_perror_backtrace (err);
+}
+
 int
 main (int argc, char **argv)
 {
@@ -119,10 +143,15 @@ main (int argc, char **argv)
   rump_register_block ();
   machdev_device_init ();
   machdev_trivfs_init (bootstrap_resume_task, "fs", &bootstrap);
+
   err = pthread_create (&t, NULL, machdev_server, NULL);
   if (err)
     return err;
   pthread_detach (t);
+
+  if (bootstrap != MACH_PORT_NULL)
+    install_as_translator (bootstrap);
+
   machdev_trivfs_server (bootstrap);
   return 0;
 }
-- 
2.25.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]