liblaunch: implement stdio handle initialisation for child task
This commit is contained in:
@@ -64,6 +64,8 @@ struct launch_parameters {
|
|||||||
size_t p_channel_count;
|
size_t p_channel_count;
|
||||||
|
|
||||||
void *p_resolver_arg;
|
void *p_resolver_arg;
|
||||||
|
|
||||||
|
kern_handle_t p_stdio[3];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct launch_result {
|
struct launch_result {
|
||||||
|
|||||||
@@ -209,6 +209,20 @@ enum launch_status launch_ctx_execute(
|
|||||||
remote_stack_buf + STACK_SIZE);
|
remote_stack_buf + STACK_SIZE);
|
||||||
virt_addr_t bsdata = write_bootstrap_data(&stack, interp_path, params);
|
virt_addr_t bsdata = write_bootstrap_data(&stack, interp_path, params);
|
||||||
|
|
||||||
|
for (int i = 0; i < 3; i++) {
|
||||||
|
if (params->p_stdio[i] == KERN_HANDLE_INVALID) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
kern_handle_transfer(
|
||||||
|
KERN_HANDLE_INVALID,
|
||||||
|
params->p_stdio[i],
|
||||||
|
remote_task,
|
||||||
|
i,
|
||||||
|
HANDLE_TRANSFER_MOVE,
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
|
||||||
virt_addr_t ip = image.e_hdr.e_entry + image.e_remote_base;
|
virt_addr_t ip = image.e_hdr.e_entry + image.e_remote_base;
|
||||||
|
|
||||||
kern_handle_t thread;
|
kern_handle_t thread;
|
||||||
|
|||||||
Reference in New Issue
Block a user