Changeset View
Changeset View
Standalone View
Standalone View
lib/libvmmapi/vmmapi.c
Show First 20 Lines • Show All 246 Lines • ▼ Show 20 Lines | vm_get_guestmem_from_ctx(struct vmctx *ctx, char **guest_baseaddr, | ||||
*guest_baseaddr = ctx->baseaddr; | *guest_baseaddr = ctx->baseaddr; | ||||
*lowmem_size = ctx->lowmem; | *lowmem_size = ctx->lowmem; | ||||
*highmem_size = ctx->highmem; | *highmem_size = ctx->highmem; | ||||
return (0); | return (0); | ||||
} | } | ||||
int | int | ||||
vm_munmap_memseg(struct vmctx *ctx, vm_paddr_t gpa, size_t len) | |||||
{ | |||||
struct vm_munmap munmap; | |||||
int error; | |||||
munmap.gpa = gpa; | |||||
munmap.len = len; | |||||
error = ioctl(ctx->fd, VM_MUNMAP_MEMSEG, &munmap); | |||||
return (error); | |||||
} | |||||
int | |||||
vm_mmap_getnext(struct vmctx *ctx, vm_paddr_t *gpa, int *segid, | vm_mmap_getnext(struct vmctx *ctx, vm_paddr_t *gpa, int *segid, | ||||
vm_ooffset_t *segoff, size_t *len, int *prot, int *flags) | vm_ooffset_t *segoff, size_t *len, int *prot, int *flags) | ||||
{ | { | ||||
struct vm_memmap memmap; | struct vm_memmap memmap; | ||||
int error; | int error; | ||||
bzero(&memmap, sizeof(struct vm_memmap)); | bzero(&memmap, sizeof(struct vm_memmap)); | ||||
memmap.gpa = *gpa; | memmap.gpa = *gpa; | ||||
▲ Show 20 Lines • Show All 713 Lines • ▼ Show 20 Lines | vm_map_pptdev_mmio(struct vmctx *ctx, int bus, int slot, int func, | ||||
pptmmio.gpa = gpa; | pptmmio.gpa = gpa; | ||||
pptmmio.len = len; | pptmmio.len = len; | ||||
pptmmio.hpa = hpa; | pptmmio.hpa = hpa; | ||||
return (ioctl(ctx->fd, VM_MAP_PPTDEV_MMIO, &pptmmio)); | return (ioctl(ctx->fd, VM_MAP_PPTDEV_MMIO, &pptmmio)); | ||||
} | } | ||||
int | int | ||||
vm_unmap_pptdev_mmio(struct vmctx *ctx, int bus, int slot, int func, | |||||
vm_paddr_t gpa, size_t len) | |||||
{ | |||||
struct vm_pptdev_mmio pptmmio; | |||||
bzero(&pptmmio, sizeof(pptmmio)); | |||||
pptmmio.bus = bus; | |||||
pptmmio.slot = slot; | |||||
pptmmio.func = func; | |||||
pptmmio.gpa = gpa; | |||||
pptmmio.len = len; | |||||
return (ioctl(ctx->fd, VM_UNMAP_PPTDEV_MMIO, &pptmmio)); | |||||
} | |||||
int | |||||
vm_setup_pptdev_msi(struct vmctx *ctx, int vcpu, int bus, int slot, int func, | vm_setup_pptdev_msi(struct vmctx *ctx, int vcpu, int bus, int slot, int func, | ||||
uint64_t addr, uint64_t msg, int numvec) | uint64_t addr, uint64_t msg, int numvec) | ||||
{ | { | ||||
struct vm_pptdev_msi pptmsi; | struct vm_pptdev_msi pptmsi; | ||||
bzero(&pptmsi, sizeof(pptmsi)); | bzero(&pptmsi, sizeof(pptmsi)); | ||||
pptmsi.vcpu = vcpu; | pptmsi.vcpu = vcpu; | ||||
pptmsi.bus = bus; | pptmsi.bus = bus; | ||||
▲ Show 20 Lines • Show All 647 Lines • ▼ Show 20 Lines | |||||
const cap_ioctl_t * | const cap_ioctl_t * | ||||
vm_get_ioctls(size_t *len) | vm_get_ioctls(size_t *len) | ||||
{ | { | ||||
cap_ioctl_t *cmds; | cap_ioctl_t *cmds; | ||||
/* keep in sync with machine/vmm_dev.h */ | /* keep in sync with machine/vmm_dev.h */ | ||||
static const cap_ioctl_t vm_ioctl_cmds[] = { VM_RUN, VM_SUSPEND, VM_REINIT, | static const cap_ioctl_t vm_ioctl_cmds[] = { VM_RUN, VM_SUSPEND, VM_REINIT, | ||||
VM_ALLOC_MEMSEG, VM_GET_MEMSEG, VM_MMAP_MEMSEG, VM_MMAP_MEMSEG, | VM_ALLOC_MEMSEG, VM_GET_MEMSEG, VM_MMAP_MEMSEG, VM_MMAP_MEMSEG, | ||||
VM_MMAP_GETNEXT, VM_SET_REGISTER, VM_GET_REGISTER, | VM_MMAP_GETNEXT, VM_MUNMAP_MEMSEG, VM_SET_REGISTER, VM_GET_REGISTER, | ||||
VM_SET_SEGMENT_DESCRIPTOR, VM_GET_SEGMENT_DESCRIPTOR, | VM_SET_SEGMENT_DESCRIPTOR, VM_GET_SEGMENT_DESCRIPTOR, | ||||
VM_SET_REGISTER_SET, VM_GET_REGISTER_SET, | VM_SET_REGISTER_SET, VM_GET_REGISTER_SET, | ||||
VM_SET_KERNEMU_DEV, VM_GET_KERNEMU_DEV, | VM_SET_KERNEMU_DEV, VM_GET_KERNEMU_DEV, | ||||
VM_INJECT_EXCEPTION, VM_LAPIC_IRQ, VM_LAPIC_LOCAL_IRQ, | VM_INJECT_EXCEPTION, VM_LAPIC_IRQ, VM_LAPIC_LOCAL_IRQ, | ||||
VM_LAPIC_MSI, VM_IOAPIC_ASSERT_IRQ, VM_IOAPIC_DEASSERT_IRQ, | VM_LAPIC_MSI, VM_IOAPIC_ASSERT_IRQ, VM_IOAPIC_DEASSERT_IRQ, | ||||
VM_IOAPIC_PULSE_IRQ, VM_IOAPIC_PINCOUNT, VM_ISA_ASSERT_IRQ, | VM_IOAPIC_PULSE_IRQ, VM_IOAPIC_PINCOUNT, VM_ISA_ASSERT_IRQ, | ||||
VM_ISA_DEASSERT_IRQ, VM_ISA_PULSE_IRQ, VM_ISA_SET_IRQ_TRIGGER, | VM_ISA_DEASSERT_IRQ, VM_ISA_PULSE_IRQ, VM_ISA_SET_IRQ_TRIGGER, | ||||
VM_SET_CAPABILITY, VM_GET_CAPABILITY, VM_BIND_PPTDEV, | VM_SET_CAPABILITY, VM_GET_CAPABILITY, VM_BIND_PPTDEV, | ||||
VM_UNBIND_PPTDEV, VM_MAP_PPTDEV_MMIO, VM_PPTDEV_MSI, | VM_UNBIND_PPTDEV, VM_MAP_PPTDEV_MMIO, VM_PPTDEV_MSI, | ||||
VM_PPTDEV_MSIX, VM_PPTDEV_DISABLE_MSIX, | VM_PPTDEV_MSIX, VM_PPTDEV_DISABLE_MSIX, VM_UNMAP_PPTDEV_MMIO, | ||||
VM_INJECT_NMI, VM_STATS, VM_STAT_DESC, | VM_INJECT_NMI, VM_STATS, VM_STAT_DESC, | ||||
VM_SET_X2APIC_STATE, VM_GET_X2APIC_STATE, | VM_SET_X2APIC_STATE, VM_GET_X2APIC_STATE, | ||||
VM_GET_HPET_CAPABILITIES, VM_GET_GPA_PMAP, VM_GLA2GPA, | VM_GET_HPET_CAPABILITIES, VM_GET_GPA_PMAP, VM_GLA2GPA, | ||||
VM_GLA2GPA_NOFAULT, | VM_GLA2GPA_NOFAULT, | ||||
VM_ACTIVATE_CPU, VM_GET_CPUS, VM_SUSPEND_CPU, VM_RESUME_CPU, | VM_ACTIVATE_CPU, VM_GET_CPUS, VM_SUSPEND_CPU, VM_RESUME_CPU, | ||||
VM_SET_INTINFO, VM_GET_INTINFO, | VM_SET_INTINFO, VM_GET_INTINFO, | ||||
VM_RTC_WRITE, VM_RTC_READ, VM_RTC_SETTIME, VM_RTC_GETTIME, | VM_RTC_WRITE, VM_RTC_READ, VM_RTC_SETTIME, VM_RTC_GETTIME, | ||||
VM_RESTART_INSTRUCTION, VM_SET_TOPOLOGY, VM_GET_TOPOLOGY }; | VM_RESTART_INSTRUCTION, VM_SET_TOPOLOGY, VM_GET_TOPOLOGY }; | ||||
Show All 12 Lines |