HV_VP_VTL_CONTROL
L'hypervisor usa parte della pagina di assist VP per facilitare la comunicazione con il codice in esecuzione in una VTL superiore a VTL0. Ogni VTL ha una propria struttura di controllo (ad eccezione di VTL0).
Le informazioni seguenti sono comunicate tramite la pagina di controllo:
- Motivo della voce VTL.
- Flag che indica che è in corso l'asserzione di VINA.
- Valori per i registri da caricare in caso di restituzione di una durata virtuale.
Sintassi
typedef enum
{
// This reason is reserved and is not used.
HvVtlEntryReserved = 0,
// Indicates entry due to a VTL call from a lower VTL.
HvVtlEntryVtlCall = 1,
// Indicates entry due to an interrupt targeted to the VTL.
HvVtlEntryInterrupt = 2
} HV_VTL_ENTRY_REASON;
typedef struct
{
// The hypervisor updates the entry reason with an indication as to why
// the VTL was entered on the virtual processor.
HV_VTL_ENTRY_REASON EntryReason;
// This flag determines whether the VINA interrupt line is asserted.
union
{
UINT8 AsUINT8;
struct
{
UINT8 VinaAsserted :1;
UINT8 VinaReservedZ :7;
};
} VinaStatus;
UINT8 ReservedZ00;
UINT16 ReservedZ01;
// A guest updates the VtlReturn* fields to provide the register values
// to restore on VTL return. The specific register values that are
// restored will vary based on whether the VTL is 32-bit or 64-bit.
union
{
struct
{
UINT64 VtlReturnX64Rax;
UINT64 VtlReturnX64Rcx;
};
struct
{
UINT32 VtlReturnX86Eax;
UINT32 VtlReturnX86Ecx;
UINT32 VtlReturnX86Edx;
UINT32 ReservedZ1;
};
};
} HV_VP_VTL_CONTROL;