Zephyr API Documentation  2.7.0-rc2
A Scalable Open Source RTOS
ipm.h
Go to the documentation of this file.
1
7/*
8 * Copyright (c) 2015 Intel Corporation
9 *
10 * SPDX-License-Identifier: Apache-2.0
11 */
12
13#ifndef ZEPHYR_INCLUDE_DRIVERS_IPM_H_
14#define ZEPHYR_INCLUDE_DRIVERS_IPM_H_
15
23#include <kernel.h>
24#include <device.h>
25
26#ifdef __cplusplus
27extern "C" {
28#endif
29
45typedef void (*ipm_callback_t)(const struct device *ipmdev, void *user_data,
46 uint32_t id, volatile void *data);
47
54typedef int (*ipm_send_t)(const struct device *ipmdev, int wait, uint32_t id,
55 const void *data, int size);
62typedef int (*ipm_max_data_size_get_t)(const struct device *ipmdev);
63
70typedef uint32_t (*ipm_max_id_val_get_t)(const struct device *ipmdev);
71
78typedef void (*ipm_register_callback_t)(const struct device *port,
80 void *user_data);
81
88typedef int (*ipm_set_enabled_t)(const struct device *ipmdev, int enable);
89
90__subsystem struct ipm_driver_api {
96};
97
133__syscall int ipm_send(const struct device *ipmdev, int wait, uint32_t id,
134 const void *data, int size);
135
136static inline int z_impl_ipm_send(const struct device *ipmdev, int wait,
137 uint32_t id,
138 const void *data, int size)
139{
140 const struct ipm_driver_api *api =
141 (const struct ipm_driver_api *)ipmdev->api;
142
143 return api->send(ipmdev, wait, id, data, size);
144}
145
154static inline void ipm_register_callback(const struct device *ipmdev,
155 ipm_callback_t cb, void *user_data)
156{
157 const struct ipm_driver_api *api =
158 (const struct ipm_driver_api *)ipmdev->api;
159
160 api->register_callback(ipmdev, cb, user_data);
161}
162
173__syscall int ipm_max_data_size_get(const struct device *ipmdev);
174
175static inline int z_impl_ipm_max_data_size_get(const struct device *ipmdev)
176{
177 const struct ipm_driver_api *api =
178 (const struct ipm_driver_api *)ipmdev->api;
179
180 return api->max_data_size_get(ipmdev);
181}
182
183
194__syscall uint32_t ipm_max_id_val_get(const struct device *ipmdev);
195
196static inline uint32_t z_impl_ipm_max_id_val_get(const struct device *ipmdev)
197{
198 const struct ipm_driver_api *api =
199 (const struct ipm_driver_api *)ipmdev->api;
200
201 return api->max_id_val_get(ipmdev);
202}
203
213__syscall int ipm_set_enabled(const struct device *ipmdev, int enable);
214
215static inline int z_impl_ipm_set_enabled(const struct device *ipmdev,
216 int enable)
217{
218 const struct ipm_driver_api *api =
219 (const struct ipm_driver_api *)ipmdev->api;
220
221 return api->set_enabled(ipmdev, enable);
222}
223
224#ifdef __cplusplus
225}
226#endif
227
232#include <syscalls/ipm.h>
233
234#endif /* ZEPHYR_INCLUDE_DRIVERS_IPM_H_ */
void
Definition: eswifi_shell.c:15
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.
void(* ipm_register_callback_t)(const struct device *port, ipm_callback_t cb, void *user_data)
Callback API upon registration.
Definition: ipm.h:78
int(* ipm_set_enabled_t)(const struct device *ipmdev, int enable)
Callback API upon enablement of interrupts.
Definition: ipm.h:88
static void ipm_register_callback(const struct device *ipmdev, ipm_callback_t cb, void *user_data)
Register a callback function for incoming messages.
Definition: ipm.h:154
int ipm_set_enabled(const struct device *ipmdev, int enable)
Enable interrupts and callbacks for inbound channels.
int(* ipm_max_data_size_get_t)(const struct device *ipmdev)
Callback API to get maximum data size.
Definition: ipm.h:62
int(* ipm_send_t)(const struct device *ipmdev, int wait, uint32_t id, const void *data, int size)
Callback API to send IPM messages.
Definition: ipm.h:54
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.
uint32_t(* ipm_max_id_val_get_t)(const struct device *ipmdev)
Callback API to get the ID's maximum value.
Definition: ipm.h:70
void(* ipm_callback_t)(const struct device *ipmdev, void *user_data, uint32_t id, volatile void *data)
Callback API for incoming IPM messages.
Definition: ipm.h:45
__UINT32_TYPE__ uint32_t
Definition: stdint.h:60
Runtime device structure (in ROM) per driver instance.
Definition: device.h:367
const void * api
Definition: device.h:373
Definition: ipm.h:90
ipm_register_callback_t register_callback
Definition: ipm.h:92
ipm_max_data_size_get_t max_data_size_get
Definition: ipm.h:93
ipm_max_id_val_get_t max_id_val_get
Definition: ipm.h:94
ipm_set_enabled_t set_enabled
Definition: ipm.h:95
ipm_send_t send
Definition: ipm.h:91
static fdata_t data[2]
Definition: test_fifo_contexts.c:15
static const intptr_t user_data[5]
Definition: main.c:590