Ejemplo n.º 1
0
Archivo: rpc.c Proyecto: seL4/refos
void
rpc_push_str(const char* v)
{
    uint32_t slen = strlen(v);
    rpc_push_uint(slen);
    _rpc_mr = rpc_marshall(_rpc_mr, v, slen);
}
Ejemplo n.º 2
0
Archivo: rpc.c Proyecto: seL4/refos
void
rpc_push_buf_array(void* v, size_t sz, uint32_t count)
{
    char *rv = (char*)v;
    rpc_push_uint(count);
    for (uint32_t i = 0; i < count; i++) {
        rpc_push_buf(rv + i * sz, sz);
    }
}
Ejemplo n.º 3
0
refos_err_t proc_nice(int threadID, int priority) {
    int rpc__error_;
    refos_err_t __ret__;
    memset(&__ret__, 0, sizeof(refos_err_t));

    rpc_init("proc_nice", RPC_PROC_NICE);
    rpc_set_dest(REFOS_PROCSERV_EP);
    rpc_push_uint(threadID);
    rpc_push_uint(priority);

    rpc__error_ = rpc_call_server();
    if (rpc__error_) {
        rpc_release();
        return __ret__;
    }

    rpc_pop_buf(&__ret__, sizeof(refos_err_t));
    rpc_release();
    return __ret__;
}
Ejemplo n.º 4
0
refos_err_t proc_window_map(seL4_CPtr window, uint32_t windowOffset, uint32_t srcAddr) {
    int rpc__error_;
    refos_err_t __ret__;
    memset(&__ret__, 0, sizeof(refos_err_t));

    rpc_init("proc_window_map", RPC_PROC_WINDOW_MAP);
    rpc_set_dest(REFOS_PROCSERV_EP);
    rpc_push_cptr(window);
    rpc_push_uint(windowOffset);
    rpc_push_uint(srcAddr);

    rpc__error_ = rpc_call_server();
    if (rpc__error_) {
        rpc_release();
        return __ret__;
    }

    rpc_pop_buf(&__ret__, sizeof(refos_err_t));
    rpc_release();
    return __ret__;
}
Ejemplo n.º 5
0
seL4_CPtr proc_create_mem_window_internal(uint32_t vaddr, uint32_t size, uint32_t permissions, uint32_t flags, refos_err_t* errno) {
    int rpc__error_;
    seL4_CPtr __ret__;
    memset(&__ret__, 0, sizeof(seL4_CPtr));

    rpc_init("proc_create_mem_window_internal", RPC_PROC_CREATE_MEM_WINDOW_INTERNAL);
    rpc_set_dest(REFOS_PROCSERV_EP);
    rpc_push_uint(vaddr);
    rpc_push_uint(size);
    rpc_push_uint(permissions);
    rpc_push_uint(flags);

    rpc__error_ = rpc_call_server();
    if (rpc__error_) {
        rpc_release();
        return __ret__;
    }

    rpc_pop_buf(errno, sizeof(refos_err_t));
    __ret__ = (seL4_CPtr) rpc_pop_cptr();
    __ret__ = rpc_copyout_cptr(__ret__);
    rpc_release();
    return __ret__;
}
Ejemplo n.º 6
0
refos_err_t proc_exit(int32_t status) {
    int rpc__error_;
    refos_err_t __ret__;
    memset(&__ret__, 0, sizeof(refos_err_t));

    rpc_init("proc_exit", RPC_PROC_EXIT);
    rpc_set_dest(REFOS_PROCSERV_EP);
    rpc_push_uint(status);

    rpc__error_ = rpc_call_server();
    if (rpc__error_) {
        rpc_release();
        return __ret__;
    }

    rpc_pop_buf(&__ret__, sizeof(refos_err_t));
    rpc_release();
    return __ret__;
}
Ejemplo n.º 7
0
seL4_CPtr proc_get_irq_handler(int irq) {
    int rpc__error_;
    seL4_CPtr __ret__;
    memset(&__ret__, 0, sizeof(seL4_CPtr));

    rpc_init("proc_get_irq_handler", RPC_PROC_GET_IRQ_HANDLER);
    rpc_set_dest(REFOS_PROCSERV_EP);
    rpc_push_uint(irq);

    rpc__error_ = rpc_call_server();
    if (rpc__error_) {
        rpc_release();
        return __ret__;
    }

    __ret__ = (seL4_CPtr) rpc_pop_cptr();
    __ret__ = rpc_copyout_cptr(__ret__);
    rpc_release();
    return __ret__;
}
Ejemplo n.º 8
0
refos_err_t proc_set_parambuffer(seL4_CPtr dataspace, uint32_t size) {
    int rpc__error_;
    refos_err_t __ret__;
    memset(&__ret__, 0, sizeof(refos_err_t));

    rpc_init("proc_set_parambuffer", RPC_PROC_SET_PARAMBUFFER);
    rpc_set_dest(REFOS_PROCSERV_EP);
    rpc_push_cptr(dataspace);
    rpc_push_uint(size);

    rpc__error_ = rpc_call_server();
    if (rpc__error_) {
        rpc_release();
        return __ret__;
    }

    rpc_pop_buf(&__ret__, sizeof(refos_err_t));
    rpc_release();
    return __ret__;
}
Ejemplo n.º 9
0
seL4_CPtr proc_get_mem_window(uint32_t vaddr) {
    int rpc__error_;
    seL4_CPtr __ret__;
    memset(&__ret__, 0, sizeof(seL4_CPtr));

    rpc_init("proc_get_mem_window", RPC_PROC_GET_MEM_WINDOW);
    rpc_set_dest(REFOS_PROCSERV_EP);
    rpc_push_uint(vaddr);

    rpc__error_ = rpc_call_server();
    if (rpc__error_) {
        rpc_release();
        return __ret__;
    }

    __ret__ = (seL4_CPtr) rpc_pop_cptr();
    __ret__ = rpc_copyout_cptr(__ret__);
    rpc_release();
    return __ret__;
}
Ejemplo n.º 10
0
refos_err_t proc_resize_mem_window(seL4_CPtr window, uint32_t size) {
    int rpc__error_;
    refos_err_t __ret__;
    memset(&__ret__, 0, sizeof(refos_err_t));

    rpc_init("proc_resize_mem_window", RPC_PROC_RESIZE_MEM_WINDOW);
    rpc_set_dest(REFOS_PROCSERV_EP);
    rpc_push_cptr(window);
    rpc_push_uint(size);

    rpc__error_ = rpc_call_server();
    if (rpc__error_) {
        rpc_release();
        return __ret__;
    }

    rpc_pop_buf(&__ret__, sizeof(refos_err_t));
    rpc_release();
    return __ret__;
}
Ejemplo n.º 11
0
int proc_clone_internal(seL4_Word entryPoint, seL4_Word childStack, int flags, seL4_Word arg, refos_err_t* errno) {
    int rpc__error_;
    int __ret__;
    memset(&__ret__, 0, sizeof(int));

    rpc_init("proc_clone_internal", RPC_PROC_CLONE_INTERNAL);
    rpc_set_dest(REFOS_PROCSERV_EP);
    rpc_push_buf(&entryPoint, sizeof(seL4_Word));
    rpc_push_buf(&childStack, sizeof(seL4_Word));
    rpc_push_uint(flags);
    rpc_push_buf(&arg, sizeof(seL4_Word));

    rpc__error_ = rpc_call_server();
    if (rpc__error_) {
        rpc_release();
        return __ret__;
    }

    rpc_pop_buf(errno, sizeof(refos_err_t));
    __ret__ = (int) rpc_pop_uint();
    rpc_release();
    return __ret__;
}
Ejemplo n.º 12
0
refos_err_t proc_new_proc(char* name, char* params, bool block, int32_t priority, int32_t* status) {
    int rpc__error_;
    refos_err_t __ret__;
    memset(&__ret__, 0, sizeof(refos_err_t));

    rpc_init("proc_new_proc", RPC_PROC_NEW_PROC);
    rpc_set_dest(REFOS_PROCSERV_EP);
    rpc_push_str(name);
    rpc_push_str(params);
    rpc_push_buf(&block, sizeof(bool));
    rpc_push_uint(priority);

    rpc__error_ = rpc_call_server();
    if (rpc__error_) {
        rpc_release();
        return __ret__;
    }

    rpc_pop_buf(status, sizeof(int32_t));
    rpc_pop_buf(&__ret__, sizeof(refos_err_t));
    rpc_release();
    return __ret__;
}