Lines Matching defs:env

21 static int sel4rpc_handle_memory(sel4rpc_server_env_t *env, RpcMessage *rpcMsg)
26 error = vka_cspace_alloc_path(env->vka, &path);
29 sel4rpc_server_reply(env, 0, 1, 0);
34 error = vka_utspace_alloc_at(env->vka, &path, rpcMsg->msg.memory.type, rpcMsg->msg.memory.size_bits,
38 vka_cspace_free_path(env->vka, path);
39 sel4rpc_server_reply(env, 0, 1, 0);
44 int ret = sel4rpc_server_reply(env, 1, 0, cookie);
47 vka_cspace_free_path(env->vka, path);
51 vka_utspace_free(env->vka, rpcMsg->msg.memory.type, rpcMsg->msg.memory.size_bits,
54 return sel4rpc_server_reply(env, 0, 0, 0);
58 static int sel4rpc_handle_ioport(sel4rpc_server_env_t *env, RpcMessage *rpcMsg)
62 error = vka_cspace_alloc_path(env->vka, &path);
65 sel4rpc_server_reply(env, 0, 1, 0);
69 seL4_Error err = simple_get_IOPort_cap(env->simple, rpcMsg->msg.ioport.start, rpcMsg->msg.ioport.end,
72 vka_cspace_free_path(env->vka, path);
73 sel4rpc_server_reply(env, 0, 1, 0);
78 int ret = sel4rpc_server_reply(env, 1, 0, 0);
81 vka_cspace_free_path(env->vka, path);
85 static int sel4rpc_handle_irq(sel4rpc_server_env_t *env, RpcMessage *rpcMsg)
89 error = vka_cspace_alloc_path(env->vka, &path);
92 sel4rpc_server_reply(env, 0, 1, 0);
102 err = arch_simple_get_msi(&env->simple->arch_simple, path, msi->pci_bus,
111 err = arch_simple_get_ioapic(&env->simple->arch_simple, path, ioapic->ioapic,
121 err = arch_simple_get_IRQ_trigger(&env->simple->arch_simple, simple->irq,
126 err = simple_get_IRQ_handler(env->simple, simple->irq, path);
132 vka_cspace_free_path(env->vka, path);
137 vka_cspace_free_path(env->vka, path);
138 sel4rpc_server_reply(env, 0, 1, 0);
143 int ret = sel4rpc_server_reply(env, 1, 0, 0);
146 vka_cspace_free_path(env->vka, path);
150 int sel4rpc_default_handler(sel4rpc_server_env_t *env, UNUSED void *data, RpcMessage *rpcMsg)
156 return sel4rpc_handle_memory(env, rpcMsg);
158 return sel4rpc_handle_ioport(env, rpcMsg);
160 return sel4rpc_handle_irq(env, rpcMsg);
168 int sel4rpc_server_init(sel4rpc_server_env_t *env, vka_t *vka,
171 env->vka = vka;
172 env->reply = reply;
173 env->handler = handler_func;
174 env->data = data;
175 env->simple = simple;
179 int sel4rpc_server_reply(sel4rpc_server_env_t *env, int caps, int errorCode, int cookie)
192 vka_cspace_free(env->vka, seL4_GetCap(caps));
203 api_reply(env->reply->cptr, seL4_MessageInfo_new(0, 0, caps, size));
208 int sel4rpc_server_recv(sel4rpc_server_env_t *env)
219 if (env->handler) {
220 err = env->handler(env, env->data, &rpcMsg);
222 err = sel4rpc_default_handler(env, NULL, &rpcMsg);