src/libixy-vfio.h
VFIO entry-point declarations.
filesrc/libixy-vfio.h
#ifndef LIBIXY_VFIO_H
#define LIBIXY_VFIO_H
#include <stdint.h>
// enables DMA on a VFIO device
void vfio_enable_dma(int device_fd);
// initializes the IOMMU for the device. returns the devices file descriptor or
// -1 on error
int vfio_init(const char* pci_addr);
int vfio_enable_msi(int device_fd);
int vfio_disable_msi(int device_fd);
int vfio_enable_msix(int device_fd, uint32_t interrupt_vector);
int vfio_disable_msix(int device_fd);
int vfio_setup_interrupt(int device_fd);
int vfio_epoll_wait(int epoll_fd, int maxevents, int timeout);
int vfio_epoll_ctl(int event_fd);
// returns a uint8_t pointer to the MMAPED region or MAP_FAILED if failed.
// region_index is to be taken from linux/vfio.h
uint8_t* vfio_map_region(int vfio_fd, int region_index);
// returns iova (physical address of the DMA memory from device view) on success
// or -1 else
uint64_t vfio_map_dma(void* vaddr, uint32_t size);
// unmaps previously mapped DMA region. returns 0 on success
uint64_t vfio_unmap_dma(int fd, uint64_t iova, uint32_t size);
#endif //LIBIXY_VFIO_H