1/* 2 * Copyright 2019, Data61, CSIRO (ABN 41 687 119 230) 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#pragma once 8 9#include <simple/simple.h> 10#include <vka/object.h> 11#include <vka/vka.h> 12#include <rpc.pb.h> 13 14#define SEL4RPC_MSG_MAGIC (0xcafed00d) 15 16struct sel4rpc_env; 17 18typedef int (*sel4rpc_handler_t)(struct sel4rpc_env *env, void *data, RpcMessage *rpcMsg); 19typedef struct sel4rpc_env { 20 vka_t *vka; 21 22 vka_object_t *reply; 23 24 sel4rpc_handler_t handler; 25 void *data; 26 27 simple_t *simple; 28} sel4rpc_server_env_t; 29 30int sel4rpc_server_init(sel4rpc_server_env_t *env, vka_t *vka, 31 sel4rpc_handler_t handler_func, void *data, vka_object_t *reply, simple_t *simple); 32int sel4rpc_server_recv(sel4rpc_server_env_t *env); 33int sel4rpc_server_reply(sel4rpc_server_env_t *env, int caps, int errorCode, int cookie); 34int sel4rpc_default_handler(sel4rpc_server_env_t *env, UNUSED void *data, RpcMessage *rpcMsg); 35 36