36 #if defined(__cplusplus) 41 #include "virtqueue.h" 42 #include "rpmsg_env.h" 44 #include "rpmsg_compiler.h" 54 #define RL_VERSION "3.1.0" 57 #define RL_WORD_SIZE (sizeof(uint32_t)) 58 #define RL_WORD_ALIGN_UP(a) \ 59 (((((uint32_t)a) & (RL_WORD_SIZE - 1U)) != 0U) ? ((((uint32_t)a) & (~(RL_WORD_SIZE - 1U))) + 4U) : ((uint32_t)a)) 60 #define RL_WORD_ALIGN_DOWN(a) \ 61 (((((uint32_t)a) & (RL_WORD_SIZE - 1U)) != 0U) ? (((uint32_t)a) & (~(RL_WORD_SIZE - 1U))) : ((uint32_t)a)) 64 #define RL_SUCCESS (0) 65 #define RL_NULL ((void *)0) 70 #define RL_ADDR_ANY (0xFFFFFFFFU) 71 #define RL_RELEASE (0) 73 #define RL_DONT_BLOCK (0) 74 #define RL_BLOCK (0xFFFFFFFFU) 77 #define RL_ERRORS_BASE (-5000) 78 #define RL_ERR_NO_MEM (RL_ERRORS_BASE - 1) 79 #define RL_ERR_BUFF_SIZE (RL_ERRORS_BASE - 2) 80 #define RL_ERR_PARAM (RL_ERRORS_BASE - 3) 81 #define RL_ERR_DEV_ID (RL_ERRORS_BASE - 4) 82 #define RL_ERR_MAX_VQ (RL_ERRORS_BASE - 5) 83 #define RL_ERR_NO_BUFF (RL_ERRORS_BASE - 6) 84 #define RL_NOT_READY (RL_ERRORS_BASE - 7) 85 #define RL_ALREADY_DONE (RL_ERRORS_BASE - 8) 88 #define RL_NO_FLAGS (0) 93 typedef int32_t (*
rl_ept_rx_cb_t)(
void *payload, uint32_t payload_len, uint32_t src,
void *priv);
133 #if defined(RL_USE_ENVIRONMENT_CONTEXT) && (RL_USE_ENVIRONMENT_CONTEXT == 1) 137 #if defined(RL_USE_STATIC_API) && (RL_USE_STATIC_API == 1) 138 struct vq_static_context vq_ctxt[2];
164 #if defined(RL_USE_STATIC_API) && (RL_USE_STATIC_API == 1) 170 #elif defined(RL_USE_ENVIRONMENT_CONTEXT) && (RL_USE_ENVIRONMENT_CONTEXT == 1) 172 void *shmem_addr,
size_t shmem_length, uint32_t link_id, uint32_t init_flags,
void *env_cfg);
177 uint32_t init_flags);
195 #if defined(RL_USE_STATIC_API) && (RL_USE_STATIC_API == 1) 200 #elif defined(RL_USE_ENVIRONMENT_CONTEXT) && (RL_USE_ENVIRONMENT_CONTEXT == 1) 235 #if defined(RL_USE_STATIC_API) && (RL_USE_STATIC_API == 1) 291 #if defined(RL_API_HAS_ZEROCOPY) && (RL_API_HAS_ZEROCOPY == 1) 357 #if defined(__cplusplus) LOCK * lock
Definition: rpmsg_lite.h:127
Definition: rpmsg_lite.h:122
int32_t rpmsg_lite_send(struct rpmsg_lite_instance *rpmsg_lite_dev, struct rpmsg_lite_endpoint *ept, uint32_t dst, char *data, uint32_t size, uint32_t timeout)
Sends a message contained in data field of length size to the remote endpoint with address dst...
int32_t rpmsg_lite_destroy_ept(struct rpmsg_lite_instance *rpmsg_lite_dev, struct rpmsg_lite_endpoint *rl_ept)
This function deletes rpmsg endpoint and performs cleanup.
int32_t rpmsg_lite_send_nocopy(struct rpmsg_lite_instance *rpmsg_lite_dev, struct rpmsg_lite_endpoint *ept, uint32_t dst, void *data, uint32_t size)
Sends a message in tx buffer allocated by rpmsg_lite_alloc_tx_buffer()
char * sh_mem_base
Definition: rpmsg_lite.h:129
void * rfu
Definition: rpmsg_lite.h:103
Definition: rpmsg_lite.h:110
struct virtqueue_ops const * vq_ops
Definition: rpmsg_lite.h:132
struct rpmsg_lite_endpoint * rpmsg_lite_create_ept(struct rpmsg_lite_instance *rpmsg_lite_dev, uint32_t addr, rl_ept_rx_cb_t rx_cb, void *rx_cb_data)
Create a new rpmsg endpoint, which can be used for communication.
int32_t rpmsg_lite_release_rx_buffer(struct rpmsg_lite_instance *rpmsg_lite_dev, void *rxbuf)
Releases the rx buffer for future reuse in vring. This API can be called at process context when the ...
int32_t(* rl_ept_rx_cb_t)(void *payload, uint32_t payload_len, uint32_t src, void *priv)
Receive callback function type.
Definition: rpmsg_lite.h:93
int32_t rpmsg_lite_deinit(struct rpmsg_lite_instance *rpmsg_lite_dev)
Deinitialized the RPMsg-Lite communication stack This function always succeeds. rpmsg_lite_init() can...
void * rx_cb_data
Definition: rpmsg_lite.h:102
struct rpmsg_lite_instance * rpmsg_lite_master_init(void *shmem_addr, size_t shmem_length, uint32_t link_id, uint32_t init_flags)
Initializes the RPMsg-Lite communication stack. Must be called prior to any other RPMSG lite API...
struct rpmsg_lite_instance * rpmsg_lite_remote_init(void *shmem_addr, uint32_t link_id, uint32_t init_flags)
Initializes the RPMsg-Lite communication stack. Must be called prior to any other RPMsg-Lite API...
struct virtqueue * rvq
Definition: rpmsg_lite.h:124
void * rpmsg_lite_alloc_tx_buffer(struct rpmsg_lite_instance *rpmsg_lite_dev, uint32_t *size, uint32_t timeout)
Allocates the tx buffer for message payload.
Definition: rpmsg_lite.h:98
uint32_t sh_mem_total
Definition: rpmsg_lite.h:131
struct llist * rl_endpoints
Definition: rpmsg_lite.h:126
int32_t rpmsg_lite_is_link_up(struct rpmsg_lite_instance *rpmsg_lite_dev)
Function to get the link state.
struct virtqueue * tvq
Definition: rpmsg_lite.h:125
uint32_t addr
Definition: rpmsg_lite.h:100
uint32_t link_state
Definition: rpmsg_lite.h:128
rl_ept_rx_cb_t rx_cb
Definition: rpmsg_lite.h:101
uint32_t sh_mem_remaining
Definition: rpmsg_lite.h:130