RPMsg is a framework to allow communication between two processors. RPMsg implementation in OpenAMP library is based on virtio. It complies the RPMsg Linux kernel implementation. It defines the handshaking on setting up and tearing down the communication between applicaitons running on two processors.
void rpmsg_virtio_init_shm_pool(struct rpmsg_virtio_shm_pool *shpool, void *shbuf, size_t size)
int rpmsg_init_vdev(struct rpmsg_virtio_device *rvdev, struct virtio_device *vdev, rpmsg_ns_bind_cb ns_bind_cb, struct metal_io_region *shm_io, struct rpmsg_virtio_shm_pool *shpool)
void rpmsg_deinit_vdev(struct rpmsg_virtio_device *rvdev)`
struct rpmsg_device *rpmsg_virtio_get_rpmsg_device(struct rpmsg_virtio_device *rvdev)
int rpmsg_create_ept(struct rpmsg_endpoint *ept, struct rpmsg_device *rdev, const char *name, uint32_t src, uint32_t dest, rpmsg_ept_cb cb, rpmsg_ns_unbind_cb ns_unbind_cb)
void rpmsg_destroy_ept(struct rpsmg_endpoint *ept)
int is_rpmsg_ept_ready(struct rpmsg_endpoint *ept)
int rpmsg_send(struct rpmsg_endpoint *ept, const void *data, int len)
int rpmsg_sendto(struct rpmsg_endpoint *ept, void *data, int len, uint32_t dst)
int rpmsg_send_offchannel(struct rpmsg_endpoint *ept, uint32_t src, uint32_t dst, const void *data, int len)
int rpmsg_trysend(struct rpmsg_endpoint *ept, const void *data, int len)
int rpmsg_trysendto(struct rpmsg_endpoint *ept, void *data, int len, uint32_t dst)
int rpmsg_trysend_offchannel(struct rpmsg_endpoint *ept, uint32_t src, uint32_t dst, const void *data, int len)`
int (*rpmsg_ept_cb)(struct rpmsg_endpoint *ept, void *data, size_t len, uint32_t src, void *priv)
void (*rpmsg_ns_bind_cb)(struct rpmsg_device *rdev, const char *name, uint32_t dest)
void (*rpmsg_ns_unbind_cb)(struct rpmsg_endpoint *ept)