blob: 247eae19134dbd276e080910d38a85d6b14130f2 [file] [log] [blame]
/*
* Copyright 2014, NICTA
*
* 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(NICTA_GPL)
*/
#ifndef _LIB_VMM_INTERRUPT_H_
#define _LIB_VMM_INTERRUPT_H_
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);
/* 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);
#endif