Zephyr API Documentation  3.7.0
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
ipm.h File Reference

Generic low-level inter-processor mailbox communication API. More...

#include <zephyr/kernel.h>
#include <zephyr/device.h>
#include <zephyr/syscalls/ipm.h>

Go to the source code of this file.

Data Structures

struct  ipm_driver_api
 

Typedefs

typedef void(* ipm_callback_t) (const struct device *ipmdev, void *user_data, uint32_t id, volatile void *data)
 Callback API for incoming IPM messages.
 
typedef int(* ipm_send_t) (const struct device *ipmdev, int wait, uint32_t id, const void *data, int size)
 Callback API to send IPM messages.
 
typedef int(* ipm_max_data_size_get_t) (const struct device *ipmdev)
 Callback API to get maximum data size.
 
typedef uint32_t(* ipm_max_id_val_get_t) (const struct device *ipmdev)
 Callback API to get the ID's maximum value.
 
typedef void(* ipm_register_callback_t) (const struct device *port, ipm_callback_t cb, void *user_data)
 Callback API upon registration.
 
typedef int(* ipm_set_enabled_t) (const struct device *ipmdev, int enable)
 Callback API upon enablement of interrupts.
 
typedef void(* ipm_complete_t) (const struct device *ipmdev)
 Callback API upon command completion.
 

Functions

int ipm_send (const struct device *ipmdev, int wait, uint32_t id, const void *data, int size)
 Try to send a message over the IPM device.
 
static void ipm_register_callback (const struct device *ipmdev, ipm_callback_t cb, void *user_data)
 Register a callback function for incoming messages.
 
int ipm_max_data_size_get (const struct device *ipmdev)
 Return the maximum number of bytes possible in an outbound message.
 
uint32_t ipm_max_id_val_get (const struct device *ipmdev)
 Return the maximum id value possible in an outbound message.
 
int ipm_set_enabled (const struct device *ipmdev, int enable)
 Enable interrupts and callbacks for inbound channels.
 
void ipm_complete (const struct device *ipmdev)
 Signal asynchronous command completion.
 

Detailed Description

Generic low-level inter-processor mailbox communication API.