diff options
Diffstat (limited to 'src/fiber.c')
-rw-r--r-- | src/fiber.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/fiber.c b/src/fiber.c index aa83fa8..b678842 100644 --- a/src/fiber.c +++ b/src/fiber.c @@ -123,20 +123,27 @@ static void process_runq(struct tf_scheduler *sched) } } -int tf_main(tf_fiber_proc main_fiber) +int tf_main_args(tf_fiber_proc main_fiber, int argc, char **argv) { struct tf_uctx *ctx = alloca(sizeof(struct tf_uctx) + sizeof(struct tf_scheduler)); struct tf_scheduler *sched = (struct tf_scheduler*) ctx->fiber.data; + struct tf_main_ctx *mainctx; int stack_guard = STACK_GUARD; ctx->stack_guard = &stack_guard; *sched = (struct tf_scheduler){ .run_q = TF_LIST_HEAD_INITIALIZER(sched->run_q), }; + __tf_scheduler = sched; tf_poll_init(); update_time(sched); - tf_fiber_put(tf_fiber_create(main_fiber, 0)); + + mainctx = tf_fiber_create(main_fiber, sizeof(struct tf_main_ctx)); + mainctx->argc = argc; + mainctx->argv = argv; + tf_fiber_put(mainctx); + do { tf_mtime_diff_t timeout; |