7#ifndef ZEPHYR_INCLUDE_IPC_ICMSG_H_ 
    8#define ZEPHYR_INCLUDE_IPC_ICMSG_H_ 
   49#ifdef CONFIG_IPC_SERVICE_ICMSG_SHMEM_ACCESS_SYNC 
   65#ifdef CONFIG_IPC_SERVICE_ICMSG_NOCOPY_RX 
  135               const void *
msg, 
size_t len);
 
  182                        void **
data, 
size_t *size);
 
  240                      const void *
msg, 
size_t len);
 
  242#ifdef CONFIG_IPC_SERVICE_ICMSG_NOCOPY_RX 
long atomic_t
Definition: atomic.h:22
 
Generic low-level multi-channel inter-processor mailbox communication API.
 
static ssize_t send(int sock, const void *buf, size_t len, int flags)
Definition: socket.h:738
 
int icmsg_close(const struct icmsg_config_t *conf, struct icmsg_data_t *dev_data)
Close an icmsg instance.
 
int icmsg_send(const struct icmsg_config_t *conf, struct icmsg_data_t *dev_data, const void *msg, size_t len)
Send a message to the remote icmsg instance.
 
int icmsg_drop_tx_buffer(const struct icmsg_config_t *conf, struct icmsg_data_t *dev_data, const void *data)
Drop and release a TX buffer.
 
int icmsg_open(const struct icmsg_config_t *conf, struct icmsg_data_t *dev_data, const struct ipc_service_cb *cb, void *ctx)
Open an icmsg instance.
 
int icmsg_send_nocopy(const struct icmsg_config_t *conf, struct icmsg_data_t *dev_data, const void *msg, size_t len)
Send a message from a buffer obtained by icmsg_get_tx_buffer to the remote icmsg instance.
 
icmsg_state
Definition: icmsg.h:29
 
int icmsg_get_tx_buffer(const struct icmsg_config_t *conf, struct icmsg_data_t *dev_data, void **data, size_t *size)
Get an empty TX buffer to be sent using icmsg_send_nocopy.
 
@ ICMSG_STATE_BUSY
Definition: icmsg.h:31
 
@ ICMSG_STATE_READY
Definition: icmsg.h:32
 
@ ICMSG_STATE_OFF
Definition: icmsg.h:30
 
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
 
__UINTPTR_TYPE__ uintptr_t
Definition: stdint.h:105
 
size_t rx_shm_size
Definition: icmsg.h:39
 
size_t tx_shm_size
Definition: icmsg.h:38
 
uintptr_t rx_shm_addr
Definition: icmsg.h:37
 
struct mbox_channel mbox_rx
Definition: icmsg.h:41
 
uintptr_t tx_shm_addr
Definition: icmsg.h:36
 
struct mbox_channel mbox_tx
Definition: icmsg.h:40
 
const struct ipc_service_cb * cb
Definition: icmsg.h:54
 
atomic_t send_buffer_reserved
Definition: icmsg.h:48
 
struct k_work_delayable notify_work
Definition: icmsg.h:59
 
uint8_t rx_buffer[CONFIG_IPC_SERVICE_ICMSG_CB_BUF_SIZE]
Definition: icmsg.h:62
 
const struct icmsg_config_t * cfg
Definition: icmsg.h:58
 
struct spsc_pbuf * tx_ib
Definition: icmsg.h:46
 
struct spsc_pbuf * rx_ib
Definition: icmsg.h:47
 
struct k_work mbox_work
Definition: icmsg.h:60
 
void * ctx
Definition: icmsg.h:55
 
atomic_t state
Definition: icmsg.h:61
 
Event callback structure.
Definition: ipc_service.h:145
 
Definition: kernel.h:2822
 
A structure used to submit work after a delay.
Definition: kernel.h:3793
 
A structure used to submit work.
Definition: kernel.h:3765
 
Provides a type to hold an MBOX channel.
Definition: mbox.h:93
 
Single producer, single consumer packet buffer.
Definition: spsc_pbuf.h:100
 
static fdata_t data[2]
Definition: test_fifo_contexts.c:15
 
static void msg(uint64_t c64)
Definition: main.c:17