summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2021-04-04 13:37:50 +1000
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2021-04-04 16:16:26 +0200
commitbef0f49eff0eb113e551b7cf1f552364f8d805c7 (patch)
tree2e53daaf3b0e94a3a7456253bb7903630d1f65dc
parent5ff1e40ee5fd2262192f7819b6de59d16993c5a2 (diff)
machdev: Pass argv through to _hurd_initv0.9.git20210404
Message-Id: <20210404033750.143411-1-damien@zamaudio.com>
-rw-r--r--libmachdev/machdev.h2
-rw-r--r--libmachdev/trivfs_server.c11
-rw-r--r--pci-arbiter/main.c2
-rw-r--r--rumpdisk/main.c2
4 files changed, 10 insertions, 7 deletions
diff --git a/libmachdev/machdev.h b/libmachdev/machdev.h
index 8f613b35..5d0eed02 100644
--- a/libmachdev/machdev.h
+++ b/libmachdev/machdev.h
@@ -33,7 +33,7 @@ void machdev_device_init(void);
void machdev_device_shutdown(mach_port_t dosync_handle);
void * machdev_server(void *);
error_t machdev_create_device_port (size_t size, void *result);
-int machdev_trivfs_init(mach_port_t bootstrap_resume_task, const char *name, const char *path, mach_port_t *bootstrap);
+int machdev_trivfs_init(int argc, char **argv, mach_port_t bootstrap_resume_task, const char *name, const char *path, mach_port_t *bootstrap);
void machdev_trivfs_server(mach_port_t bootstrap);
boolean_t machdev_is_master_device (mach_port_t port);
diff --git a/libmachdev/trivfs_server.c b/libmachdev/trivfs_server.c
index 60711348..1c5d53ad 100644
--- a/libmachdev/trivfs_server.c
+++ b/libmachdev/trivfs_server.c
@@ -76,12 +76,14 @@ static char *devnode;
/* Startup and shutdown notifications management */
struct port_class *machdev_shutdown_notify_class;
-
static void arrange_shutdown_notification (void);
/* Our parent's task, if applicable */
static task_t parent_task;
+/* Our argument vector */
+static char **machdev_argv;
+
static void
install_as_translator (mach_port_t bootport)
{
@@ -315,7 +317,7 @@ trivfs_S_fsys_init (struct trivfs_control *fsys,
portarray[INIT_PORT_AUTH] = authhandle;
portarray[INIT_PORT_CRDIR] = root;
portarray[INIT_PORT_CWDIR] = root;
- _hurd_init (0, NULL, portarray, INIT_PORT_MAX, NULL, 0);
+ _hurd_init (0, machdev_argv, portarray, INIT_PORT_MAX, NULL, 0);
/* Mark us as important. */
proc = getproc ();
@@ -434,8 +436,8 @@ resume_bootstrap_server(mach_port_t server_task, const char *server_name)
}
int
-machdev_trivfs_init(mach_port_t bootstrap_resume_task, const char *name, const char *path,
- mach_port_t *bootstrap)
+machdev_trivfs_init(int argc, char **argv, mach_port_t bootstrap_resume_task,
+ const char *name, const char *path, mach_port_t *bootstrap)
{
mach_port_t mybootstrap = MACH_PORT_NULL;
port_bucket = ports_create_bucket ();
@@ -445,6 +447,7 @@ machdev_trivfs_init(mach_port_t bootstrap_resume_task, const char *name, const c
trivfs_protid_class, 0, &control);
*bootstrap = MACH_PORT_NULL;
+ machdev_argv = argv;
task_get_bootstrap_port (mach_task_self (), &mybootstrap);
if (mybootstrap)
diff --git a/pci-arbiter/main.c b/pci-arbiter/main.c
index 1815994a..050f1aac 100644
--- a/pci-arbiter/main.c
+++ b/pci-arbiter/main.c
@@ -214,7 +214,7 @@ main (int argc, char **argv)
if (disk_server_task != MACH_PORT_NULL)
{
machdev_register (&pci_arbiter_emulation_ops);
- machdev_trivfs_init (disk_server_task, "pci", "/servers/bus/pci", &bootstrap);
+ machdev_trivfs_init (argc, argv, disk_server_task, "pci", "/servers/bus/pci", &bootstrap);
machdev_device_init ();
err = pthread_create (&t, NULL, machdev_server, NULL);
if (err)
diff --git a/rumpdisk/main.c b/rumpdisk/main.c
index 87bc5573..7f503b51 100644
--- a/rumpdisk/main.c
+++ b/rumpdisk/main.c
@@ -112,7 +112,7 @@ main (int argc, char **argv)
}
rump_register_block ();
- machdev_trivfs_init (bootstrap_resume_task, "rumpdisk", "/dev/rumpdisk", &bootstrap);
+ machdev_trivfs_init (argc, argv, bootstrap_resume_task, "rumpdisk", "/dev/rumpdisk", &bootstrap);
machdev_device_init ();
err = pthread_create (&t, NULL, machdev_server, NULL);
if (err)