示例#1
0
文件: thread.c 项目: Zolok/refos
void
thread_release(struct proc_tcb *thread)
{
    assert(thread);
    assert(thread->vspaceRef);
    cspacepath_t path;
    vka_cspace_make_path(&procServ.vka, thread_tcb_obj(thread), &path);
    vka_cnode_revoke(&path);
    sel4utils_clean_up_thread(&procServ.vka, &thread->vspaceRef->vspace, &thread->sel4utilsThread);
    vs_unref(thread->vspaceRef);
    memset(thread, 0, sizeof(struct proc_tcb));
}
示例#2
0
refos_err_t  proc_set_domain_handler(void *rpc_userptr, int pid, int dom)
{
    printf("\nin set_domain_handler\n");
    struct proc_pcb* ppcb = pid_get_pcb(&procServ.PIDList,pid);

    printf("\nthe name of the process is %s\n", ppcb->debugProcessName);

    struct proc_tcb* ttcb = (struct proc_tcb*)cvector_get(&ppcb->threads, 0);
    seL4_CPtr ttcb_cptr = thread_tcb_obj(ttcb);

    int error = seL4_DomainSet_Set(0xb, dom, ttcb_cptr);
    if(error){
        printf("\nset domain failed!\n");
        return 1;
    }
    printf("after set domain!\n");
    return 0;
}