aboutsummaryrefslogtreecommitdiff
path: root/acpi/options.c
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2022-09-20 03:01:18 +0000
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2022-09-20 23:39:29 +0200
commit9c7a1bc253ba4a264e8e3d6ae7983f2fc645f2b3 (patch)
tree07892fe8350ec6defec702790b158ee8bbc038fa /acpi/options.c
parent432ecc4bed0ef5341d8dc7637d7631fe05ffd717 (diff)
downloadhurd-9c7a1bc253ba4a264e8e3d6ae7983f2fc645f2b3.tar.gz
hurd-9c7a1bc253ba4a264e8e3d6ae7983f2fc645f2b3.tar.bz2
hurd-9c7a1bc253ba4a264e8e3d6ae7983f2fc645f2b3.zip
acpi: Convert translator to an emulated mach device
This makes acpi usable as a bootstrap translator. Message-Id: <20220920030035.931113-1-damien@zamaudio.com>
Diffstat (limited to 'acpi/options.c')
-rw-r--r--acpi/options.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/acpi/options.c b/acpi/options.c
index 8dbcd263..fb348679 100644
--- a/acpi/options.c
+++ b/acpi/options.c
@@ -64,6 +64,15 @@ parse_opt (int opt, char *arg, struct argp_state *state)
case 'G':
h->perm.gid = atoi (arg);
break;
+ case 'N':
+ h->next_task = atoi (arg);
+ break;
+ case 'H':
+ h->host_priv_port = atoi (arg);
+ break;
+ case 'P':
+ h->dev_master_port = atoi (arg);
+ break;
case ARGP_KEY_INIT:
/* Initialize our parsing state. */
@@ -74,6 +83,9 @@ parse_opt (int opt, char *arg, struct argp_state *state)
h->ncache_len = NODE_CACHE_MAX;
h->perm.uid = 0;
h->perm.gid = 0;
+ h->next_task = MACH_PORT_NULL;
+ h->host_priv_port = MACH_PORT_NULL;
+ h->dev_master_port = MACH_PORT_NULL;
state->hook = h;
break;
@@ -84,6 +96,11 @@ parse_opt (int opt, char *arg, struct argp_state *state)
/* Set cache len */
fs->node_cache_max = h->ncache_len;
+ /* Set bootstrap ports */
+ fs->next_task = h->next_task;
+ _hurd_host_priv = h->host_priv_port;
+ _hurd_device_master = h->dev_master_port;
+
if (fs->root)
{
/*
@@ -140,6 +157,9 @@ netfs_append_args (char **argz, size_t * argz_len)
if (p->gid >= 0)
ADD_OPT ("--gid=%u", p->gid);
+ if (fs->next_task != MACH_PORT_NULL)
+ ADD_OPT ("--next-task=%u", fs->next_task);
+
#undef ADD_OPT
return err;
}