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'; }
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); } }
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__; }
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__; }