hypervisor: x86: provide a generic DescriptorTable structure

Signed-off-by: Wei Liu <liuwe@microsoft.com>
This commit is contained in:
Wei Liu
2022-07-14 21:48:08 +00:00
committed by Liu Wei
parent 75797827d5
commit d2b194c4f1
3 changed files with 48 additions and 4 deletions

View File

@@ -8,7 +8,7 @@
//
//
use crate::arch::x86::{SegmentRegister, StandardRegisters};
use crate::arch::x86::{DescriptorTable, SegmentRegister, StandardRegisters};
use crate::kvm::{Cap, Kvm, KvmError, KvmResult};
use serde::{Deserialize, Serialize};
@@ -16,7 +16,7 @@ use serde::{Deserialize, Serialize};
/// Export generically-named wrappers of kvm-bindings for Unix-based platforms
///
pub use {
kvm_bindings::kvm_cpuid_entry2 as CpuIdEntry, kvm_bindings::kvm_dtable as DescriptorTable,
kvm_bindings::kvm_cpuid_entry2 as CpuIdEntry, kvm_bindings::kvm_dtable,
kvm_bindings::kvm_fpu as FpuState, kvm_bindings::kvm_lapic_state as LapicState,
kvm_bindings::kvm_mp_state as MpState, kvm_bindings::kvm_msr_entry as MsrEntry,
kvm_bindings::kvm_regs, kvm_bindings::kvm_segment, kvm_bindings::kvm_sregs as SpecialRegisters,
@@ -152,3 +152,22 @@ impl From<kvm_segment> for SegmentRegister {
}
}
}
impl From<DescriptorTable> for kvm_dtable {
fn from(dt: DescriptorTable) -> Self {
Self {
base: dt.base,
limit: dt.limit,
..Default::default()
}
}
}
impl From<kvm_dtable> for DescriptorTable {
fn from(dt: kvm_dtable) -> Self {
Self {
base: dt.base,
limit: dt.limit,
}
}
}