QEMU下的内存结构体很多了,RAMBlock,MemoryRegion,AddressSpace,MemoryRegionSection,KVMSlot和kvm_userspace_memory_region,很多时候看代码时候都会被搅合成一坨,虽然很早时候在KVM源代码分析2:虚拟机的创建与运行和KVM源代码分析4:内存虚拟化都提到了内存虚拟化的过程,但实际上这几个结构体之间的关系并没有理...

看Google analytics分析的时候,突然想到之前的一件事,那就是360刚刚做搜索的时候,很多人质疑它宣布的15%的市场占比,后来360股价暴涨后,想到使用CNZZ统计数据的估计能提前预知到这点吧,于是我把最近一段时间内的访问者信息抽象出来,发现了很多有意思的事情。 首先要明确博客受众主要是Linux内核和虚拟化开发人员...

kernel源代码版本:git-v3.16.39 1.初始化 e1000_init_module下pci_register_driver注册驱动, static struct pci_driver e1000_driver = { .probe = e1000_probe, .remove = e1000_remove, .shutdown = e1000_shutdown, }; 在e1000_probe下,e1000_is_need_ioport为真时,执行 //PCI 6个bar空间中选择IORESOUR...

问题不是出在upstream的版本上,而是内部开发的一个产品。在KVM这个系统里面,很多时候牵一发动全身,某些改动貌似是正确的,其实则不然,内核的其他模块也是类似的系统化,Jike说的“正是内核的开发门槛很高才保证了内核当前的质量”也是有道理的。 进入正题,产品要求VCPU进入guest之前需要等待响应,当存在响应的时候...

代码版本:linux-git v4.10.0-rc3 1.kvm clock时钟 struct pvclock_vcpu_time_info { u32 version; u32 pad0; //guest的TSC时间戳,在kvm_guest_time_update中会被更新 u64 tsc_timestamp; //guest的墙上时间(1970年距今的绝对日期),和上者在一起更新 //system_time = kernel_ns + v->kvm->arch.kv...

一. epoll用户态使用规范 epoll有2种工作方式:LT和ET。 LT(level triggered,水平触发)是缺省的工作方式,并且同时支持block和no-block socket.在这种做法中,内核告诉你一个文件描述符是否就绪了,然后你可以对这个就绪的fd进行IO操作。如果你不作任何操作,内核还是会继续通知你的,所以,这种模式编程出错误可能...

代码版本linux-3.16.37-git, qemu-v2.8-git 因为eventfd要与epoll配合使用,不清楚epoll的请参考epoll的linux内核工作机制。 一. Eventfd在QEMU下的使用 Eventfd在QEMU下的使用以这三个函数为基础:event_notifier_init和event_notifier_get_fd,以及event_notifier_set_handler。 在event_notifier_init中,初始化Event...