int boot_script_task_create (struct cmd *cmd) { kern_return_t rc = task_create(TASK_NULL, FALSE, &cmd->task); if (rc) { printf("boot_script_task_create failed with %x\n", rc); return BOOT_SCRIPT_MACH_ERROR; } task_set_name(cmd->task, cmd->path); return 0; }
status_t task_init(task p, const char *name, int instance, taskfn fn, tid_t tid) { assert(p != NULL); assert(name != NULL); assert(fn != 0); p->threadid = 0; task_set_tid(p, tid); task_set_fn(p, fn); task_set_name(p, name); task_set_instance(p, instance); return success; }
/** Run the previously loaded program. * * @param rid * @param request * @return 0 on success, !0 on error. */ static void ldr_run(ipc_callid_t rid, ipc_call_t *request) { const char *cp; DPRINTF("Set task name\n"); /* Set the task name. */ cp = str_rchr(pathname, '/'); cp = (cp == NULL) ? pathname : (cp + 1); task_set_name(cp); /* Run program */ DPRINTF("Reply OK\n"); async_answer_0(rid, EOK); DPRINTF("Jump to entry point at %p\n", pcb.entry); entry_point_jmp(prog_info.entry, &pcb); /* Not reached */ }