/* * startlwp: start of a new LWP. */ void startlwp(void *arg) { ucontext_t *uc = arg; lwp_t *l = curlwp; int error __diagused; error = cpu_setmcontext(l, &uc->uc_mcontext, uc->uc_flags); KASSERT(error == 0); kmem_free(uc, sizeof(ucontext_t)); userret(l); }
/* * Start a new LWP */ void startlwp(void *arg) { ucontext_t * const uc = arg; lwp_t * const l = curlwp; int error __diagused; error = cpu_setmcontext(l, &uc->uc_mcontext, uc->uc_flags); KASSERT(error == 0); kmem_free(uc, sizeof(ucontext_t)); /* XXX - profiling spoiled here */ userret(l, l->l_md.md_utf, l->l_proc->p_sticks); }
/* * startlwp: * * Start a new LWP. */ void startlwp(void *arg) { int err; ucontext_t *uc = arg; struct lwp *l = curlwp; err = cpu_setmcontext(l, &uc->uc_mcontext, uc->uc_flags); #ifdef DIAGNOSTIC if (err) printf("Error %d from cpu_setmcontext.", err); #endif pool_put(&lwp_uc_pool, uc); userret(l); }
/* * Start a new LWP */ void startlwp(void *arg) { int err; ucontext_t *uc = arg; struct lwp *l = curlwp; err = cpu_setmcontext(l, &uc->uc_mcontext, uc->uc_flags); #if DIAGNOSTIC if (err) { printf("Error %d from cpu_setmcontext.", err); } #endif pool_put(&lwp_uc_pool, uc); userret(l, l->l_md.md_regs->tf_iioq_head, 0); }
/* * Start a new LWP */ void startlwp(void *arg) { ucontext_t *uc = arg; lwp_t *l = curlwp; struct frame *f = (struct frame *)l->l_md.md_regs; int error __diagused; f->f_regs[D0] = 0; f->f_sr &= ~PSL_C; f->f_format = FMT0; error = cpu_setmcontext(l, &uc->uc_mcontext, uc->uc_flags); KASSERT(error == 0); kmem_free(uc, sizeof(ucontext_t)); machine_userret(l, f, 0); }
/* * Start a new LWP */ void startlwp(void *arg) { int err; ucontext_t *uc = arg; struct lwp *l = curlwp; struct frame *f = (struct frame *)l->l_md.md_regs; f->f_regs[D0] = 0; f->f_sr &= ~PSL_C; f->f_format = FMT0; err = cpu_setmcontext(l, &uc->uc_mcontext, uc->uc_flags); #if DIAGNOSTIC if (err) { printf("Error %d from cpu_setmcontext.", err); } #endif pool_put(&lwp_uc_pool, uc); machine_userret(l, f, 0); }