Beispiel #1
0
Datei: rpc.c Projekt: seL4/refos
void
rpc_pop_str(char* v)
{
    // WARNING: Outputting to a C char string is never a safe thing to do.
    uint32_t slen = rpc_pop_uint();
    _rpc_mr = rpc_unmarshall(_rpc_mr, v, slen);
    v[slen] = '\0';
}
Beispiel #2
0
Datei: rpc.c Projekt: seL4/refos
void
rpc_pop_buf_array(void* v, size_t sz, uint32_t count)
{
    uint32_t cn = rpc_pop_uint();
    assert(cn <= count);
    for (int i = 0; i < cn; i++) {
        rpc_pop_buf(((char*)v) + (i * sz), sz);
    }
}
Beispiel #3
0
int proc_window_getID(seL4_CPtr window) {
    int rpc__error_;
    int __ret__;
    memset(&__ret__, 0, sizeof(int));

    rpc_init("proc_window_getID", RPC_PROC_WINDOW_GETID);
    rpc_set_dest(REFOS_PROCSERV_EP);
    rpc_push_cptr(window);

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

    __ret__ = (int) rpc_pop_uint();
    rpc_release();
    return __ret__;
}
Beispiel #4
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__;
}