设为首页 收藏本站
查看: 1592|回复: 0

[经验分享] KVM源代码框架

[复制链接]

尚未签到

发表于 2015-4-10 16:16:04 | 显示全部楼层 |阅读模式
  自己通过看代码总结的内核中包含kvm的文件夹:
  (1)Linux-3.17.4\Documentation\virtual\kvm\
  (2)Linux-3.17.4\include\
  (3)Linux-3.17.4\drivers\s390\kvm\
  (4)Linux-3.17.4\virt\kvm\
  (5)Linux-3.17.4\arch\*\kvm\   (*号代表以下处理器体系架构:x86、tile、s390、powerpc、mips、ia64、arm64、arm)  先研究x86体系架构。
  (6)linux-3.17.4\arch\x86\include\asm
  注:因为每个文件都含有makefile,所以就不列举makefile文件了。
  (1)  Linux-3.17.4\Documentation\virtual\kvm\下面为文档介绍,主要介绍了KVM中的使用的一些技术,对其中一部分数据结构和方法进行说明。
  (2)  Linux-3.17.4\include\kvm\中有2个文件:代码总共行数:4957
  Arm_arch_timer.h:KVM定时器相关的函数      代码行数:103
  Arm_vgic.h:虚拟通用中断控制器相关的数据结构和函数     代码行数:314
  
  1)linux-3.17.4\include\trace\events\kvm.h: 代码行数:322
  一些跟踪事件函数的声明
  其中一段代码:
  #define kvm_trace_exit_reason                                        \
  ERSN(UNKNOWN), ERSN(EXCEPTION), ERSN(IO), ERSN(HYPERCALL),  \
  ERSN(DEBUG), ERSN(HLT), ERSN(MMIO), ERSN(IRQ_WINDOW_OPEN),       \
  ERSN(SHUTDOWN), ERSN(FAIL_ENTRY), ERSN(INTR), ERSN(SET_TPR),       \
  ERSN(TPR_ACCESS), ERSN(S390_SIEIC), ERSN(S390_RESET), ERSN(DCR),\
  ERSN(NMI), ERSN(INTERNAL_ERROR), ERSN(OSI), ERSN(PAPR_HCALL),      \
  ERSN(S390_UCONTROL), ERSN(WATCHDOG), ERSN(S390_TSCH)
  2)linux-3.17.4\include\linux\kvm_host.h:      代码行数:1101
  非常重要的头文件
  /*
  * The bit 16 ~ bit 31 of kvm_memory_region::flags are internally used
  * in kvm, other bits are visible for userspace which are defined in
  * include/linux/kvm_h.
  */
  3)linux-3.17.4\include\linux\kvm_para.h:      代码行数:27
  一个函数:static inline int kvm_para_has_feature(unsigned int feature)
  4)linux-3.17.4\include\linux\kvm_types.h:    代码行数:79
  /*
  * Address types:
  *  gva - guest virtual address
  *  gpa - guest physical address
  *  gfn - guest frame number
  *  hva - host virtual address
  *  hpa - host physical address
  *  hfn - host frame number
  */
  
  5)linux-3.17.4\include\uapi\linux\kvm.h: 代码行数:1186
  Userspace interface for /dev/kvm - kernel based virtual machine
  /*The bit 0 ~ bit 15 of kvm_memory_region::flags are visible for userspace,
  * other bits are reserved for kvm internal use which are defined in
  * include/linux/kvm_host.h.*/
  6)linux-3.17.4\include\uapi\linux\kvm_para.h:      代码行数:33
  /*
  * This header file provides a method for making a hypercall to the host
  * Architectures should define:
  * - kvm_hypercall0, kvm_hypercall1...
  * - kvm_arch_para_features
  * - kvm_para_available
  */
  
  /* Return values for hypercalls */
  /*
  * hypercalls use architecture specific
  */
  
  7)linux-3.17.4\include\uapi\asm-generic\kvm_para.h: 代码行数:0
  /*
  * There isn't anything here, but the file must not be empty or(否则) patch
  * will delete it.
  */
  8)linux-3.17.4\include\asm-generic\kvm_para.h: 代码行数:27
  This function is used by architectures that support kvm to avoid issuing false soft lockup messages.
  Uapi可能是user api的意思
  
  (3)Linux-3.17.4\drivers\s390\kvm\文件夹下有2个文件:代码总共行数:1765
  Kvm_virtio.c: 功能是 virtio for kvm on s390    代码行数:513
  Virtio_ccw.c:  功能是ccw based virtio transport      代码行数:1252
  virtio 是对半虚拟化 hypervisor 中的一组通用模拟设备的抽象。
  重点看第(4)和(5)部分
  (4)Linux-3.17.4\virt\kvm\  与体系结构无关的代码   代码总共行数:10629
  包含一个名为arm的文件夹和15个文件。
  
  assigned-dev.c 代码行数:1027
  功能:Kernel-based Virtual Machine - device assignment support
  async_pf.c和async_pf.h:   代码行数:228
  kvm asynchronous fault support  KVM支持异步故障
  coalesced_mmio.c和coalesced_mmio.h:     代码行数:183+39
  KVM  coalesced(合并) MMIO
  MMIO(Memory mapping I/O)即内存映射I/O,它是PCI规范的一部分,I/O设备被放置在内存空间而不是I/O空间。
  eventfd.c: 代码行数:931
  kvm eventfd support - use eventfd objects to signal various KVM events
  ioapic.c和ioapic.h:       代码行数:646+103
  apic: Advanced Programmable Interrupt Controller高级可编程中断控制器.
  Iodev.h: 对io设备的操作头文件 代码行数:71
  Iommu.c : 代码行数:361
  input/output memory management unit。Device的IOMMU类似于CPU的MMU。
  MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权,多用户多进程操作系统。
  Irq_comm.c:   代码行数:370
  Common API for in kernel interrupt controllers .
  irqchip.c:   代码行数:215
  Common API for in kernel interrupt controllers
  This file is derived from virt/kvm/irq_comm.c.
  IRQ全称为Interrupt Request,即是“中断请求”的意思,IRQ的作用就是在我们所用的电脑中,执行硬件中断请求的动作。
  Kconfig: KVM common configuration items and defaults
  Kvm_main.c:     代码行数:3279
  Kernel-based Virtual Machine driver for Linux.This module enables machines with Intel VT-x extensions to run virtual machines without emulation or binary translation.
  Vfio.c: 代码行数:278
  VFIO-KVM bridge pseudo device
  VFIO是一套用户态驱动框架,它提供两种基本服务:(1)向用户态提供访问硬件设备的接口(2) 向用户态提供配置IOMMU的接口
  
  arm文件夹中包含4个文件。
  arch_timer.c:KVM定时器  代码行数:318
  Vgic:virtual generic interrupt controller,其它3个文件功能就是主要描述它的。V2和v3是第二第三个版本。 代码行数:2070+264+246
  (5) Linux-3.17.4\arch\x86\kvm\   与体系结构相关的代码 代码总共行数:39246
  包含25个文件
  
  
  Cupid.c和cpuid.h: 代码行数:795+107
  CPU ID 指用户计算机当今的信息处理器的信息。
  Kernel-based Virtual Machine driver for Linux
  cpuid support routines
  derived from arch/x86/kvm/x86.c
  emulate.c: 代码行数:5068
  Generic x86 (32-bit and 64-bit) instruction decoder and emulator.
  Linux coding style, mod r/m decoder, segment base fixes, real-mode privileged instructions
  I8254.c和i8254.h: 代码行数:778+66
  8253/8254 interval timer emulation,就是定时器仿真。Based on QEMU and Xen.
  I8259.c:     代码行数:665
  8259 interrupt controller emulation,中断控制器仿真。Port from Qemu.
  irq.c:    代码行数:130
  API for in kernel interrupt controller
  irq.h:    代码行数:107
  in kernel interrupt controller related definitions
  Kconfig: KVM configuration;  source "virt/kvm/Kconfig"
  Kvm_cache_regs.h: 代码行数:103
  Lapic.c和Lapic.h:   代码行数:1937+174
  Local APIC virtualization。apic: Advanced Programmable Interrupt Controller高级可编程中断控制器
  Mmu.c和mmu.h: 代码行数:4608 + 182
  Kernel-based Virtual Machine driver for Linux
  * This module enables machines with Intel VT-x extensions to run virtual machines without emulation or binary translation.
  * MMU support
  Mmu_audit.c: Audit code for KVM MMU   代码行数:300
  Mmutrace.h:     代码行数:334
  paging_tmpl.h: 代码行数:993
  Kernel-based Virtual Machine driver for Linux;MMU support;
  pmu.c: 代码行数:573
  Kernel-based Virtual Machine -- Performance Monitoring Unit support, 性能监视单元支持
  svm.c:       代码行数:4424
  Kernel-based Virtual Machine driver for Linux; AMD SVM support;svm:安全虚拟机
  Trace.h:     代码行数:862
  Tss.h:        代码行数:60
  Vmx.c: 代码行数:9132
  Kernel-based Virtual Machine driver for Linux;
  X86.c和x86.h: 代码行数:7676 + 172
  * Kernel-based Virtual Machine driver for Linux
  * derived from drivers/kvm/kvm_main.c
  (6)linux-3.17.4\arch\x86\include\asm下面有4个头文件代码总共行数:1663
  
  kvm_emulate.h:      代码行数:428
  Generic x86 (32-bit and 64-bit) instruction decoder and emulator. Copyright (c) 2005 Keir Fraser. From: xen-unstable 10676:af9809f51f81a3c43f276f00c81a52ef558afda4
  kvm_guest.h:          代码行数:7
  #ifndef _ASM_X86_KVM_GUEST_H//如果没有定义~
  #define _ASM_X86_KVM_GUEST_H//则定义~,且编译以下代码
  int kvm_setup_vsyscall_timeinfo(void);
  #endif /* _ASM_X86_KVM_GUEST_H */
  kvm_host.h:           代码行数:1096
  This header defines architecture specific interfaces, x86 version
  kvm_para.h:           代码行数:132
  共有代码:58260行(只包含x86架构)。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-55759-1-1.html 上篇帖子: CentOS6.4 KVM 虚拟机环境搭建 下篇帖子: KVM Block Migrate
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表