Changeset View
Changeset View
Standalone View
Standalone View
lib/libvmmapi/vmmapi.h
| Show First 20 Lines • Show All 152 Lines • ▼ Show 20 Lines | |||||
| int vm_set_register_set(struct vcpu *vcpu, unsigned int count, | int vm_set_register_set(struct vcpu *vcpu, unsigned int count, | ||||
| const int *regnums, uint64_t *regvals); | const int *regnums, uint64_t *regvals); | ||||
| int vm_get_register_set(struct vcpu *vcpu, unsigned int count, | int vm_get_register_set(struct vcpu *vcpu, unsigned int count, | ||||
| const int *regnums, uint64_t *regvals); | const int *regnums, uint64_t *regvals); | ||||
| int vm_run(struct vcpu *vcpu, struct vm_run *vmrun); | int vm_run(struct vcpu *vcpu, struct vm_run *vmrun); | ||||
| int vm_suspend(struct vmctx *ctx, enum vm_suspend_how how); | int vm_suspend(struct vmctx *ctx, enum vm_suspend_how how); | ||||
| int vm_reinit(struct vmctx *ctx); | int vm_reinit(struct vmctx *ctx); | ||||
| int vm_apicid2vcpu(struct vmctx *ctx, int apicid); | int vm_apicid2vcpu(struct vmctx *ctx, int apicid); | ||||
| #ifdef __amd64__ | |||||
| int vm_inject_exception(struct vcpu *vcpu, int vector, | int vm_inject_exception(struct vcpu *vcpu, int vector, | ||||
| int errcode_valid, uint32_t errcode, int restart_instruction); | int errcode_valid, uint32_t errcode, int restart_instruction); | ||||
| #ifdef __amd64__ | |||||
| int vm_lapic_irq(struct vcpu *vcpu, int vector); | int vm_lapic_irq(struct vcpu *vcpu, int vector); | ||||
| int vm_lapic_local_irq(struct vcpu *vcpu, int vector); | int vm_lapic_local_irq(struct vcpu *vcpu, int vector); | ||||
| int vm_lapic_msi(struct vmctx *ctx, uint64_t addr, uint64_t msg); | int vm_lapic_msi(struct vmctx *ctx, uint64_t addr, uint64_t msg); | ||||
| int vm_ioapic_assert_irq(struct vmctx *ctx, int irq); | int vm_ioapic_assert_irq(struct vmctx *ctx, int irq); | ||||
| int vm_ioapic_deassert_irq(struct vmctx *ctx, int irq); | int vm_ioapic_deassert_irq(struct vmctx *ctx, int irq); | ||||
| int vm_ioapic_pulse_irq(struct vmctx *ctx, int irq); | int vm_ioapic_pulse_irq(struct vmctx *ctx, int irq); | ||||
| int vm_ioapic_pincount(struct vmctx *ctx, int *pincount); | int vm_ioapic_pincount(struct vmctx *ctx, int *pincount); | ||||
| int vm_isa_assert_irq(struct vmctx *ctx, int atpic_irq, int ioapic_irq); | int vm_isa_assert_irq(struct vmctx *ctx, int atpic_irq, int ioapic_irq); | ||||
| int vm_isa_deassert_irq(struct vmctx *ctx, int atpic_irq, int ioapic_irq); | int vm_isa_deassert_irq(struct vmctx *ctx, int atpic_irq, int ioapic_irq); | ||||
| int vm_isa_pulse_irq(struct vmctx *ctx, int atpic_irq, int ioapic_irq); | int vm_isa_pulse_irq(struct vmctx *ctx, int atpic_irq, int ioapic_irq); | ||||
| int vm_isa_set_irq_trigger(struct vmctx *ctx, int atpic_irq, | int vm_isa_set_irq_trigger(struct vmctx *ctx, int atpic_irq, | ||||
| enum vm_intr_trigger trigger); | enum vm_intr_trigger trigger); | ||||
| int vm_inject_nmi(struct vcpu *vcpu); | int vm_inject_nmi(struct vcpu *vcpu); | ||||
| #endif | |||||
| int vm_readwrite_kernemu_device(struct vcpu *vcpu, | int vm_readwrite_kernemu_device(struct vcpu *vcpu, | ||||
| vm_paddr_t gpa, bool write, int size, uint64_t *value); | vm_paddr_t gpa, bool write, int size, uint64_t *value); | ||||
| #endif | |||||
| int vm_capability_name2type(const char *capname); | int vm_capability_name2type(const char *capname); | ||||
| const char *vm_capability_type2name(int type); | const char *vm_capability_type2name(int type); | ||||
| int vm_get_capability(struct vcpu *vcpu, enum vm_cap_type cap, | int vm_get_capability(struct vcpu *vcpu, enum vm_cap_type cap, | ||||
| int *retval); | int *retval); | ||||
| int vm_set_capability(struct vcpu *vcpu, enum vm_cap_type cap, | int vm_set_capability(struct vcpu *vcpu, enum vm_cap_type cap, | ||||
| int val); | int val); | ||||
| int vm_assign_pptdev(struct vmctx *ctx, int bus, int slot, int func); | int vm_assign_pptdev(struct vmctx *ctx, int bus, int slot, int func); | ||||
| int vm_unassign_pptdev(struct vmctx *ctx, int bus, int slot, int func); | int vm_unassign_pptdev(struct vmctx *ctx, int bus, int slot, int func); | ||||
| Show All 13 Lines | |||||
| /* | /* | ||||
| * Return a pointer to the statistics buffer. Note that this is not MT-safe. | * Return a pointer to the statistics buffer. Note that this is not MT-safe. | ||||
| */ | */ | ||||
| uint64_t *vm_get_stats(struct vcpu *vcpu, struct timeval *ret_tv, | uint64_t *vm_get_stats(struct vcpu *vcpu, struct timeval *ret_tv, | ||||
| int *ret_entries); | int *ret_entries); | ||||
| const char *vm_get_stat_desc(struct vmctx *ctx, int index); | const char *vm_get_stat_desc(struct vmctx *ctx, int index); | ||||
| #ifdef __amd64__ | |||||
| int vm_get_x2apic_state(struct vcpu *vcpu, enum x2apic_state *s); | int vm_get_x2apic_state(struct vcpu *vcpu, enum x2apic_state *s); | ||||
| int vm_set_x2apic_state(struct vcpu *vcpu, enum x2apic_state s); | int vm_set_x2apic_state(struct vcpu *vcpu, enum x2apic_state s); | ||||
| int vm_get_hpet_capabilities(struct vmctx *ctx, uint32_t *capabilities); | int vm_get_hpet_capabilities(struct vmctx *ctx, uint32_t *capabilities); | ||||
| #endif | |||||
| /* | /* | ||||
| * Translate the GLA range [gla,gla+len) into GPA segments in 'iov'. | * Translate the GLA range [gla,gla+len) into GPA segments in 'iov'. | ||||
| * The 'iovcnt' should be big enough to accommodate all GPA segments. | * The 'iovcnt' should be big enough to accommodate all GPA segments. | ||||
| * | * | ||||
| * retval fault Interpretation | * retval fault Interpretation | ||||
| * 0 0 Success | * 0 0 Success | ||||
| * 0 1 An exception was injected into the guest | * 0 1 An exception was injected into the guest | ||||
| * EFAULT N/A Error | * EFAULT N/A Error | ||||
| */ | */ | ||||
| int vm_copy_setup(struct vcpu *vcpu, struct vm_guest_paging *pg, | int vm_copy_setup(struct vcpu *vcpu, struct vm_guest_paging *pg, | ||||
| uint64_t gla, size_t len, int prot, struct iovec *iov, int iovcnt, | uint64_t gla, size_t len, int prot, struct iovec *iov, int iovcnt, | ||||
| int *fault); | int *fault); | ||||
| void vm_copyin(struct iovec *guest_iov, void *host_dst, size_t len); | void vm_copyin(struct iovec *guest_iov, void *host_dst, size_t len); | ||||
| void vm_copyout(const void *host_src, struct iovec *guest_iov, size_t len); | void vm_copyout(const void *host_src, struct iovec *guest_iov, size_t len); | ||||
| void vm_copy_teardown(struct iovec *iov, int iovcnt); | void vm_copy_teardown(struct iovec *iov, int iovcnt); | ||||
| #ifdef __amd64__ | |||||
| /* RTC */ | /* RTC */ | ||||
| int vm_rtc_write(struct vmctx *ctx, int offset, uint8_t value); | int vm_rtc_write(struct vmctx *ctx, int offset, uint8_t value); | ||||
| int vm_rtc_read(struct vmctx *ctx, int offset, uint8_t *retval); | int vm_rtc_read(struct vmctx *ctx, int offset, uint8_t *retval); | ||||
| int vm_rtc_settime(struct vmctx *ctx, time_t secs); | int vm_rtc_settime(struct vmctx *ctx, time_t secs); | ||||
| int vm_rtc_gettime(struct vmctx *ctx, time_t *secs); | int vm_rtc_gettime(struct vmctx *ctx, time_t *secs); | ||||
| #endif | |||||
| /* Reset vcpu register state */ | /* Reset vcpu register state */ | ||||
| int vcpu_reset(struct vcpu *vcpu); | int vcpu_reset(struct vcpu *vcpu); | ||||
| int vm_active_cpus(struct vmctx *ctx, cpuset_t *cpus); | int vm_active_cpus(struct vmctx *ctx, cpuset_t *cpus); | ||||
| int vm_suspended_cpus(struct vmctx *ctx, cpuset_t *cpus); | int vm_suspended_cpus(struct vmctx *ctx, cpuset_t *cpus); | ||||
| int vm_debug_cpus(struct vmctx *ctx, cpuset_t *cpus); | int vm_debug_cpus(struct vmctx *ctx, cpuset_t *cpus); | ||||
| int vm_activate_cpu(struct vcpu *vcpu); | int vm_activate_cpu(struct vcpu *vcpu); | ||||
| Show All 38 Lines | |||||