|
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.