/*- * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2022 John Baldwin */ #ifndef __VMMAPI_INTERNAL_H__ #define __VMMAPI_INTERNAL_H__ #include enum { VM_MEMSEG_LOW, VM_MEMSEG_HIGH, VM_MEMSEG_COUNT, }; struct vmctx { int fd; /* device file descriptor */ int ctlfd; /* vmm control descriptor */ struct { vm_paddr_t base; vm_size_t size; } memsegs[VM_MEMSEG_COUNT]; int memflags; char *baseaddr; char *name; }; struct vcpu { struct vmctx *ctx; int vcpuid; }; int vcpu_ioctl(struct vcpu *vcpu, u_long cmd, void *arg); extern const char *vm_capstrmap[]; #define VM_COMMON_IOCTLS \ VM_RUN, \ VM_SUSPEND, \ VM_REINIT, \ VM_ALLOC_MEMSEG, \ VM_GET_MEMSEG, \ VM_MMAP_MEMSEG, \ VM_MMAP_MEMSEG, \ VM_MMAP_GETNEXT, \ VM_MUNMAP_MEMSEG, \ VM_SET_REGISTER, \ VM_GET_REGISTER, \ VM_SET_REGISTER_SET, \ VM_GET_REGISTER_SET, \ VM_INJECT_EXCEPTION, \ VM_SET_CAPABILITY, \ VM_GET_CAPABILITY, \ VM_STATS, \ VM_STAT_DESC, \ VM_GLA2GPA_NOFAULT, \ VM_ACTIVATE_CPU, \ VM_GET_CPUS, \ VM_SUSPEND_CPU, \ VM_RESUME_CPU, \ VM_SET_TOPOLOGY, \ VM_GET_TOPOLOGY #define VM_PPT_IOCTLS \ VM_BIND_PPTDEV, \ VM_UNBIND_PPTDEV, \ VM_MAP_PPTDEV_MMIO, \ VM_PPTDEV_MSI, \ VM_PPTDEV_MSIX, \ VM_UNMAP_PPTDEV_MMIO, \ VM_PPTDEV_DISABLE_MSIX extern const cap_ioctl_t vm_ioctl_cmds[]; extern size_t vm_ioctl_ncmds; #endif /* !__VMMAPI_INTERNAL_H__ */