[2013.06.02 update] 参考我写的这个文档:https://github.com/smilejay/kvm-book/blob/master/misc/kvm-code-in-linux.txt
今天简单查了Linux内核中有哪些KVM相关的代码(Linux 3.8.0-RC5版本),统计了一下KVM内核的代码量。目前在,Linux 3.8.0中有大约6万多行关于KVM代码。
内核中的KVM代码主要包括如下几个部分:
1. 硬件架构无关的KVM框架的核心代码,位于 virt/kvm/ 目录中,约有 6827 行代码。(其中,kvm_main.c 中的kvm_init函数是KVM初始化入口。)
2. 与硬件架构相关的代码,以最成熟的x86为例,位于 arch/x86/kvm/ 目录中,约有 35673 行代码。
另外,其他几个架构也有KVM相关代码,分别位于:arch/ia64/kvm 、arch/powerpc/kvm 、arch/s390/kvm 、arch/tile/kvm 等目录中。
3. KVM相关的头文件,分别位于 include/linux/ 和 include/asm-generic/ 目录中,分别有大约 1104 行 和 21 行代码。
如下命令行显示了前面介绍的KVM相关的内核代码的文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
master@jay-linux:~/kvm.git/virt/kvm$ ls assigned-dev.c async_pf.c async_pf.h coalesced_mmio.c coalesced_mmio.h eventfd.c ioapic.c ioapic.h iodev.h iommu.c irq_comm.c Kconfig kvm_main.c master@jay-linux:~/kvm.git/arch/x86/kvm$ ls cpuid.c emulate.c i8254.h irq.c Kconfig lapic.c Makefile mmu.c mmutrace.h pmu.c trace.h vmx.c x86.h cpuid.h i8254.c i8259.c irq.h kvm_cache_regs.h lapic.h mmu_audit.c mmu.h paging_tmpl.h svm.c tss.h x86.c master@jay-linux:~/kvm.git/include/linux$ ls *kvm* kvm_host.h kvm_para.h kvm_types.h master@jay-linux:~/kvm.git/include/asm-generic$ ls *kvm* kvm_para.h |
KVM在Linux内核中,总的代码行数为:43625=35673+6827+1104+21 (这里没有统计除x86架构外的架构相关kvm代码)。
https://github.com/smilejay/kvm-book/blob/master/misc/kvm-code-in-linux.txt
下载后需要改后缀.html