diff options
Diffstat (limited to 'libfshelp')
-rw-r--r-- | libfshelp/ChangeLog | 14 | ||||
-rw-r--r-- | libfshelp/fetch-root.c | 5 | ||||
-rw-r--r-- | libfshelp/fshelp.h | 7 | ||||
-rw-r--r-- | libfshelp/start-translator-long.c | 16 | ||||
-rw-r--r-- | libfshelp/start-translator.c | 6 |
5 files changed, 33 insertions, 15 deletions
diff --git a/libfshelp/ChangeLog b/libfshelp/ChangeLog index 15d96d53..15cbf690 100644 --- a/libfshelp/ChangeLog +++ b/libfshelp/ChangeLog @@ -1,3 +1,17 @@ +2001-01-17 Neal H Walfield <neal@cs.uml.edu> + + * fshelp.h: Add two new parameters to fshelp_open_fn_t: + a port to the new task and a cookie. + Add a new parameter, cookie, to fshelp_start_translator and + fshelp_start_translator_long that will be passed to + fshelp_open_fn_t. + + * fetch-root.c (fshelp_fetch_root): Conform to new + fshelp_start_translator_long semantics. + * start-translator-long.c (service_fsys_startup): Likewise. + (fshelp_start_translator_long): Likewise. + * start-translator.c (fshelp_start_translator): Likewise. + 2000-03-20 Roland McGrath <roland@baalperazim.frob.com> * delegate.c (fshelp_delegate_translation): Add const to arg type. diff --git a/libfshelp/fetch-root.c b/libfshelp/fetch-root.c index 0f255bff..3ce6293c 100644 --- a/libfshelp/fetch-root.c +++ b/libfshelp/fetch-root.c @@ -84,7 +84,8 @@ fshelp_fetch_root (struct transbox *box, void *cookie, return ret; } error_t fetch_underlying (int flags, mach_port_t *underlying, - mach_msg_type_name_t *underlying_type) + mach_msg_type_name_t *underlying_type, + task_t task, void *cookie) { return (*callback2) (box->cookie, cookie, flags, @@ -130,7 +131,7 @@ fshelp_fetch_root (struct transbox *box, void *cookie, fds[STDERR_FILENO] = reauth (getdport (STDERR_FILENO)); - err = fshelp_start_translator_long (fetch_underlying, + err = fshelp_start_translator_long (fetch_underlying, NULL, argz, argz, argz_len, fds, MACH_MSG_TYPE_COPY_SEND, STDERR_FILENO + 1, diff --git a/libfshelp/fshelp.h b/libfshelp/fshelp.h index 86cafdb1..81e1fadb 100644 --- a/libfshelp/fshelp.h +++ b/libfshelp/fshelp.h @@ -42,7 +42,8 @@ returns the node port. */ typedef error_t (*fshelp_open_fn_t) (int flags, file_t *node, - mach_msg_type_name_t *node_type); + mach_msg_type_name_t *node_type, + task_t, void *cookie); /* Start a passive translator NAME with arguments ARGZ (length ARGZ_LEN). Initialize the initports to PORTS (length PORTS_LEN), @@ -54,7 +55,7 @@ typedef error_t (*fshelp_open_fn_t) (int flags, task's owner to OWNER_UID (or, if OWNER_UID is -1, then clear the new task's owner. */ error_t -fshelp_start_translator_long (fshelp_open_fn_t underlying_open_fn, +fshelp_start_translator_long (fshelp_open_fn_t underlying_open_fn, void *cookie, char *name, char *argz, int argz_len, mach_port_t *fds, mach_msg_type_name_t fds_type, int fds_len, @@ -69,7 +70,7 @@ fshelp_start_translator_long (fshelp_open_fn_t underlying_open_fn, are copied from our own state, fd[2] is copied from our own stderr, and the other fds are cleared. */ error_t -fshelp_start_translator (fshelp_open_fn_t underlying_open_fn, +fshelp_start_translator (fshelp_open_fn_t underlying_open_fn, void *cookie, char *name, char *argz, int argz_len, int timeout, fsys_t *control); diff --git a/libfshelp/start-translator-long.c b/libfshelp/start-translator-long.c index 15fb63cb..3647d567 100644 --- a/libfshelp/start-translator-long.c +++ b/libfshelp/start-translator-long.c @@ -98,9 +98,9 @@ static const mach_msg_type_t realnodeType = translator died, and EDIED will be returned. If an error occurs, the error code is returned, otherwise 0. */ static error_t -service_fsys_startup (fshelp_open_fn_t underlying_open_fn, - mach_port_t port, long timeout, - fsys_t *control) +service_fsys_startup (fshelp_open_fn_t underlying_open_fn, void *cookie, + mach_port_t port, long timeout, fsys_t *control, + task_t task) { error_t err; union @@ -146,7 +146,8 @@ service_fsys_startup (fshelp_open_fn_t underlying_open_fn, reply.RetCode = (*underlying_open_fn) (request.startup.flags, - &reply.realnode, &realnode_type); + &reply.realnode, &realnode_type, task, + cookie); reply.realnodeType = realnodeType; reply.realnodeType.msgt_name = realnode_type; @@ -176,8 +177,8 @@ service_fsys_startup (fshelp_open_fn_t underlying_open_fn, error_t fshelp_start_translator_long (fshelp_open_fn_t underlying_open_fn, - char *name, char *argz, int argz_len, - mach_port_t *fds, + void *cookie, char *name, char *argz, + int argz_len, mach_port_t *fds, mach_msg_type_name_t fds_type, int fds_len, mach_port_t *ports, mach_msg_type_name_t ports_type, int ports_len, @@ -276,7 +277,8 @@ fshelp_start_translator_long (fshelp_open_fn_t underlying_open_fn, /* Ok, cool, we've got a running(?) program, now rendezvous with it if possible using the startup protocol on the bootstrap port... */ - err = service_fsys_startup(underlying_open_fn, bootstrap, timeout, control); + err = service_fsys_startup(underlying_open_fn, cookie, bootstrap, + timeout, control, task); lose: if (!ports_moved) diff --git a/libfshelp/start-translator.c b/libfshelp/start-translator.c index 5996ac74..ba5418ec 100644 --- a/libfshelp/start-translator.c +++ b/libfshelp/start-translator.c @@ -25,8 +25,8 @@ error_t fshelp_start_translator (fshelp_open_fn_t underlying_open_fn, - char *name, char *argz, int argz_len, - int timeout, fsys_t *control) + void *cookie, char *name, char *argz, + int argz_len, int timeout, fsys_t *control) { mach_port_t ports[INIT_PORT_MAX]; mach_port_t fds[STDERR_FILENO + 1]; @@ -45,7 +45,7 @@ fshelp_start_translator (fshelp_open_fn_t underlying_open_fn, ports[INIT_PORT_AUTH] = getauth (); fds[STDERR_FILENO] = getdport (STDERR_FILENO); - err = fshelp_start_translator_long (underlying_open_fn, + err = fshelp_start_translator_long (underlying_open_fn, cookie, name, argz, argz_len, fds, MACH_MSG_TYPE_COPY_SEND, STDERR_FILENO + 1, |