HvCallSetVpRegisters
A hiperchamada HvCallSetVpRegisters grava o estado de um processador virtual.
Interface
HV_STATUS
HvCallSetVpRegisters(
_In_ HV_PARTITION_ID PartitionId,
_In_ HV_VP_INDEX VpIndex,
_In_ HV_INPUT_VTL InputVtl,
_Inout_ PUINT32 RegisterCount,
_In_reads(RegisterCount) PCHV_REGISTER_NAME RegisterNameList,
_In_reads(RegisterCount) PCHV_REGISTER_VALUE RegisterValueList
);
O estado é gravado como uma série de valores de registro, cada um correspondente a um nome de registro fornecido como entrada.
A verificação mínima de erros é executada quando um valor de registro é modificado. Em particular, o hipervisor validará que os bits reservados de um registro são definidos como zero, os bits que são definidos de forma arquitetônica como sempre contendo um zero ou um são definidos adequadamente e os bits especificados além do tamanho arquitetônico do registro são zerados.
Essa chamada não pode ser usada para modificar o valor de um registro somente leitura.
Os efeitos colaterais da modificação de um registro não são executados. Isso inclui a geração de exceções, sincronizações de pipeline, liberações de TLB e assim por diante.
Restrições
- O chamador deve ser o pai da partição especificada por PartitionId ou a partição especificada deve ser "self" e a partição deve ter o privilégio AccessVpRegisters.
Código de chamada
0x0051
(Rep)
Parâmetros de Entrada
Nome | Deslocamento | Tamanho | Informações Fornecidas |
---|---|---|---|
PartitionId |
0 | 8 | Especifica a ID da partição. |
VpIndex |
8 | 4 | Especifica o índice do processador virtual. |
TargetVtl |
12 | 1 | especifica a VTL de destino. |
RsvdZ | 13 | 3 |
Elemento da lista de entrada
Nome | Deslocamento | Tamanho | Informações Fornecidas |
---|---|---|---|
RegisterName |
0 | 4 | Especifica o nome de um registro a ser modificado. |
RsvdZ | 4 | 12 | |
RegisterValue |
16 | 16 | Especifica o novo valor para o registro especificado. |