HvCallSetVpRegisters
El hiperllamada HvCallSetVpRegisters escribe el estado de un procesador virtual.
Interfaz
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
);
El estado se escribe como una serie de valores de registro, cada uno correspondiente a un nombre de registro proporcionado como entrada.
La comprobación de errores mínima se realiza cuando se modifica un valor de registro. En concreto, el hipervisor validará que los bits reservados de un registro se establecen en cero, los bits que se definen arquitectónicamente como siempre que contienen un cero o uno se establecen adecuadamente y los bits especificados más allá del tamaño arquitectónico del registro están ceros.
Esta llamada no se puede usar para modificar el valor de un registro de solo lectura.
No se realizan efectos secundarios de modificar un registro. Esto incluye la generación de excepciones, sincronizaciones de canalización, vaciados de TLB, etc.
Restricciones
- El autor de la llamada debe ser el elemento primario de la partición especificada por PartitionId, o la partición especificada debe ser "self" y la partición debe tener el privilegio AccessVpRegisters.
Código de llamada
0x0051
(Rep.)
Parámetros de entrada
Nombre | Offset | Size | Información proporcionada |
---|---|---|---|
PartitionId |
0 | 8 | Especifica el identificador de partición. |
VpIndex |
8 | 4 | Especifica el índice del procesador virtual. |
TargetVtl |
12 | 1 | especifica el VTL de destino. |
RsvdZ | 13 | 3 |
Elemento de lista de entrada
Nombre | Offset | Size | Información proporcionada |
---|---|---|---|
RegisterName |
0 | 4 | Especifica el nombre de un registro que se va a modificar. |
RsvdZ | 4 | 12 | |
RegisterValue |
16 | 16 | Especifica el nuevo valor para el registro especificado. |