| /* |
| * Copyright 2017, Data61 |
| * Commonwealth Scientific and Industrial Research Organisation (CSIRO) |
| * ABN 41 687 119 230. |
| * |
| * This software may be distributed and modified according to the terms of |
| * the GNU General Public License version 2. Note that NO WARRANTY is provided. |
| * See "LICENSE_GPLv2.txt" for details. |
| * |
| * @TAG(DATA61_GPL) |
| */ |
| |
| #pragma once |
| |
| typedef struct vmm_vcpu vmm_vcpu_t; |
| |
| /* Handler for a guest exit that is triggered when the guest is |
| * ready to receive interrupts */ |
| int vmm_pending_interrupt_handler(vmm_vcpu_t *vcpu); |
| |
| /* Request that the guest exist as soon as it is ready to receive |
| * interrupts */ |
| void wait_for_guest_ready(vmm_vcpu_t *vcpu); |
| |
| /* inject an exception */ |
| void vmm_inject_exception(vmm_vcpu_t *vcpu, int exception, int has_error, uint32_t error_code); |
| |
| /* Start an AP vcpu after a sipi with the requested vector */ |
| void vmm_start_ap_vcpu(vmm_vcpu_t *vcpu, unsigned int sipi_vector); |
| |
| /* Got interrupt(s) from PIC, propagate to relevant vcpu lapic */ |
| void vmm_check_external_interrupt(vmm_t *vmm); |
| |
| /* inject an interrupt from the lapic on the vcpu, whether or not it is in an exit */ |
| void vmm_vcpu_accept_interrupt(vmm_vcpu_t *vcpu); |
| |
| /* This function is called when a new interrupt has occured. */ |
| void vmm_have_pending_interrupt(vmm_vcpu_t *vcpu); |
| |