Zephyr Project API 4.0.0
A Scalable Open Source RTOS
|
Inter-VM Shared Memory (ivshmem) reference API. More...
Data Structures | |
struct | ivshmem_driver_api |
Macros | |
#define | IVSHMEM_V2_PROTO_UNDEFINED 0x0000 |
#define | IVSHMEM_V2_PROTO_NET 0x0001 |
Typedefs | |
typedef size_t(* | ivshmem_get_mem_f) (const struct device *dev, uintptr_t *memmap) |
typedef uint32_t(* | ivshmem_get_id_f) (const struct device *dev) |
typedef uint16_t(* | ivshmem_get_vectors_f) (const struct device *dev) |
typedef int(* | ivshmem_int_peer_f) (const struct device *dev, uint32_t peer_id, uint16_t vector) |
typedef int(* | ivshmem_register_handler_f) (const struct device *dev, struct k_poll_signal *signal, uint16_t vector) |
Functions | |
size_t | ivshmem_get_mem (const struct device *dev, uintptr_t *memmap) |
Get the inter-VM shared memory. | |
uint32_t | ivshmem_get_id (const struct device *dev) |
Get our VM ID. | |
uint16_t | ivshmem_get_vectors (const struct device *dev) |
Get the number of interrupt vectors we can use. | |
int | ivshmem_int_peer (const struct device *dev, uint32_t peer_id, uint16_t vector) |
Interrupt another VM. | |
int | ivshmem_register_handler (const struct device *dev, struct k_poll_signal *signal, uint16_t vector) |
Register a vector notification (interrupt) handler. | |
Inter-VM Shared Memory (ivshmem) reference API.
#define IVSHMEM_V2_PROTO_NET 0x0001 |
#define IVSHMEM_V2_PROTO_UNDEFINED 0x0000 |
typedef int(* ivshmem_register_handler_f) (const struct device *dev, struct k_poll_signal *signal, uint16_t vector) |
#include <include/zephyr/drivers/virtualization/ivshmem.h>
Get our VM ID.
dev | Pointer to the device structure for the driver instance |
#include <include/zephyr/drivers/virtualization/ivshmem.h>
Get the inter-VM shared memory.
Note: This API is not supported for ivshmem-v2, as the R/W and R/O areas may not be mapped contiguously. For ivshmem-v2, use the ivshmem_get_rw_mem_section, ivshmem_get_output_mem_section and ivshmem_get_state APIs to access the shared memory.
dev | Pointer to the device structure for the driver instance |
memmap | A pointer to fill in with the memory address |
#include <include/zephyr/drivers/virtualization/ivshmem.h>
Get the number of interrupt vectors we can use.
dev | Pointer to the device structure for the driver instance |
#include <include/zephyr/drivers/virtualization/ivshmem.h>
Interrupt another VM.
dev | Pointer to the device structure for the driver instance |
peer_id | The VM ID to interrupt |
vector | The interrupt vector to use |
int ivshmem_register_handler | ( | const struct device * | dev, |
struct k_poll_signal * | signal, | ||
uint16_t | vector | ||
) |
#include <include/zephyr/drivers/virtualization/ivshmem.h>
Register a vector notification (interrupt) handler.
dev | Pointer to the device structure for the driver instance |
signal | A pointer to a valid and ready to be signaled struct k_poll_signal. Or NULL to unregister any handler registered for the given vector. |
vector | The interrupt vector to get notification from |
Note: The returned status, if positive, to a raised signal is the vector that generated the signal. This lets the possibility to the user to have one signal for all vectors, or one per-vector.