39 lines
892 B
C
39 lines
892 B
C
#ifndef _RPC_SERVER_H_
|
|
#define _RPC_SERVER_H_
|
|
|
|
#include <aos/aos.h>
|
|
|
|
struct generic_rpc_server {
|
|
void *shared_mem;
|
|
void (*async_reply)(struct generic_rpc_server *rpc, errval_t ret_err);
|
|
};
|
|
|
|
struct aos_rpc_server {
|
|
struct generic_rpc_server g;
|
|
struct lmp_chan *chan;
|
|
|
|
struct capref ret_cap;
|
|
errval_t ret_err;
|
|
size_t ret_size;
|
|
uintptr_t ret0;
|
|
uintptr_t ret1;
|
|
};
|
|
|
|
typedef errval_t (*rpc_handler_t)(
|
|
struct generic_rpc_server *rpc,
|
|
struct capref arg_cap, size_t arg_size, uintptr_t arg0, uintptr_t arg1,
|
|
struct capref *ret_cap, size_t *ret_size, uintptr_t *ret0, uintptr_t *ret1
|
|
);
|
|
|
|
/**
|
|
* Initialize an aos_rpc_server struct.
|
|
*/
|
|
void rpc_server_init(struct aos_rpc_server *rpc, struct lmp_chan *chan, void *shared_mem);
|
|
|
|
/**
|
|
* Start listening for RPCs.
|
|
*/
|
|
void rpc_server_register_recv(struct aos_rpc_server *rpc);
|
|
|
|
#endif /* _RPC_SERVER_H_ */
|