linux-2.6.20/drivers/kvm/vmx.c(調査用メモ)
以下は調査中メモ。------------------------------------------------
□ヘッダ(システムフォルダ配下以外)
#include "kvm.h"
#include "vmx.h"
#include "kvm_vmx.h"
#include "segment_descriptor.h"
□変数・マクロ・構造体
static DEFINE_PER_CPU(struct vmcs *, vmxarea);
static DEFINE_PER_CPU(struct vmcs *, current_vmcs);
#ifdef CONFIG_X86_64
#define HOST_IS_64 1
#else
#define HOST_IS_64 0
#endif
static struct vmcs_descriptor {
#define VMX_SEGMENT_FIELD(seg) \
static struct kvm_vmx_segment_field {
static const u32 vmx_msr_index[] = {
#ifdef CONFIG_X86_64
#define NR_VMX_MSR (sizeof(vmx_msr_index) / sizeof(*vmx_msr_index))
□ifdef
CONFIG_X86_64
□関数
vmx_init
vmx_exit
□ヘッダ(システムフォルダ配下以外)
#include "kvm.h"
#include "vmx.h"
#include "kvm_vmx.h"
#include "segment_descriptor.h"
□変数・マクロ・構造体
static DEFINE_PER_CPU(struct vmcs *, vmxarea);
static DEFINE_PER_CPU(struct vmcs *, current_vmcs);
#ifdef CONFIG_X86_64
#define HOST_IS_64 1
#else
#define HOST_IS_64 0
#endif
static struct vmcs_descriptor {
int size; int order; u32 revision_id;} vmcs_descriptor;
#define VMX_SEGMENT_FIELD(seg) \
[VCPU_SREG_##seg] = { \ .selector = GUEST_##seg##_SELECTOR, \ .base = GUEST_##seg##_BASE, \ .limit = GUEST_##seg##_LIMIT, \ .ar_bytes = GUEST_##seg##_AR_BYTES, \ }
static struct kvm_vmx_segment_field {
unsigned selector; unsigned base; unsigned limit; unsigned ar_bytes;} kvm_vmx_segment_fields[] = {
VMX_SEGMENT_FIELD(CS), VMX_SEGMENT_FIELD(DS), VMX_SEGMENT_FIELD(ES), VMX_SEGMENT_FIELD(FS), VMX_SEGMENT_FIELD(GS), VMX_SEGMENT_FIELD(SS), VMX_SEGMENT_FIELD(TR), VMX_SEGMENT_FIELD(LDTR),};
static const u32 vmx_msr_index[] = {
#ifdef CONFIG_X86_64
MSR_SYSCALL_MASK, MSR_LSTAR, MSR_CSTAR, MSR_KERNEL_GS_BASE,#endif
MSR_EFER, MSR_K6_STAR,};
#define NR_VMX_MSR (sizeof(vmx_msr_index) / sizeof(*vmx_msr_index))
□ifdef
CONFIG_X86_64
□関数
vmx_init
vmx_exit
2007年03月03日(土) 23:14:25 Modified by deku_nobo