自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(111)
  • 资源 (2)
  • 收藏
  • 关注

转载 c与c++相互调用

C中如何调用C++函数? 前阵子被问及一个在C中如何调用C++函数的问题,当时简单回答是将函数用extern "C"声明,当被问及如何将类内成员函数声明时,一时语塞,后来网上查了下,网上有一翻译C++之父的文章可以作为解答,遂拿来Mark一下。 将 C++ 函数声明为``extern "C"''(在你的 C++ 代码里做这个声明),然后调用它(在你的 C 或者 C++ 代码里调用)

2012-12-07 15:55:58 261

转载 异步IO区别

epoll 与 select、poll的区别  2011-08-28 20:45:08|  分类: linux|字号 订阅       在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效

2012-11-27 09:37:05 341

原创 xen 安全 acm & flask

<!--p {margin-bottom:0.21cm}-->XEN虚拟化环境搭建安装红旗桌面操作系统(RedFlag-6.3-Sys-1.845-201207041041.iso)安装xen环境1)卸载系统安装的两个XEN包:#rpm -qa |grep xen#rpm -e xen-libs-3.3 xen-devel-3

2012-10-25 09:20:11 818

转载 基于Eclipse的Hadoop应用开发环境配置

我的开发环境:操作系统ubuntu11.10 单机模式Hadoop版本:hadoop-0.20.1Eclipse版本:eclipse-java-helios-SR2-linux-gtk.tar.gz(使用3.7的版本总是崩溃,让人郁闷)第一步:先启动hadoop守护进程具体参看:http://www.cnblogs.com/flyoung2008/archive/2011/

2011-12-28 16:15:13 631 1

转载 qemu虚拟机内存模拟

在PC机中,由于早期版本的系统资源限制,其物理内存被分为多个不同的区域,并一直延续至今,那么QEMU是如何对这种静态内存布局进行模拟的呢?1.1 整体内存分配虽然PC机的物理内存被人为地分为多个不同的区域,但是在物理结构上它们仍然是连续的,因此qemu直接从宿主机中分配了一块内存:int main(int argc, char **argv, char **envp){…………

2011-12-16 16:27:10 1470

转载 根据成员变量地址推算出结构体变量地址

在linux当中对此有一个很好的宏可以使用,叫做 container_of, 放在 linux/kernel.h当中。它的定义如下所示:/*** container_of - cast a member of a structure out to the containing structure** @ptr: the pointer to the member

2011-12-13 18:52:13 256

转载 函数指针全解析

一 通常的函数调用一个通常的函数调用的例子://自行包含头文件?1234567891011void MyFun(int x);//此处的申明也可写成:void MyFun( int );int main(int argc,char* argv[]){   MyFun(10

2011-12-02 16:23:25 286

转载 I/O空间-----I/O端口和I/O内存

I/O空间-----I/O端口和I/O内存   首先上图,如下:外设中的寄存器被称为I/O端口,外设中的内存被称为I/O内存。二者合起来统称为I/O空间。                                   设备驱动程序要直接访问外设或其接口卡上的物理电路,这部分通常都是以寄存器的形式出现。外设寄存器称为I/O端口,通常包括:控制寄存器、状态寄存器和数据寄存器三大类

2011-12-02 16:21:20 1231 1

转载 qemu qdev

http://wiki.qemu.org/Features/QDevCleanupAll devices should have a DeviceState associated with them. Otherwise, there's really no point in having qdev at all.We have lots of devices today that don't

2011-12-02 15:38:35 531

转载 qemu internal (3) memory watchpoint

qemu internal part 3: memory watchpointIn qemu there is an amazing feature – memory watchpoint. It can watch all the memory access including memory read, write or both of them. When guest os/applica

2011-11-29 18:34:52 1264

转载 qemu internal (2) softmmu

Qemu uses softmmu to accelerate the process of finding the mapping between guest physical address and host virtual address and the mapping between guest I/O region andqemu I/O emulation functions. I

2011-11-29 18:33:57 872

转载 qemu internal (1) the code path of memory load emulation

qemu internal part 1: the code path of memory load emulationIn qemu, there are two different meanings of target. The first meaning of ‘target’ means the emulated target machine architecture. For exa

2011-11-29 18:32:55 489

转载 kvm 时钟模拟之PIT(8254)

1. Linux 时钟时钟是一个系统工作的灵魂,时钟硬件的发展也非常的快,Linux内核里面兼容的时钟种类也非常的多,为了让大家更了解时钟,我先归纳一下Linux里面的时钟。本文分析的时钟是比较新的linux内核2.6.33,架构是改变最迅速的x86。 linux时钟发展到现在,很多东西已经面目全非了,要理出个头绪来不是很容易。 (1) RTC 实时时钟:这个是我们系统定时器时间的

2011-11-28 17:47:05 1461

转载 KVM 实现机制

1.    概述1.1.    KVM简介KVM是一个基于Linux内核的虚拟机,它属于完全虚拟化范畴,从Linux-2.6.20开始被包含在Linux内核中。KVM基于x86硬件虚拟化技术,它的运行要求Intel VT-x或AMD SVM的支持。一般认为,虚拟机监控的实现模型有两类:监控模型(Hypervisor)和宿主机模型(Host-based)。由于监控模型需要进行处理器调度,

2011-11-28 17:19:17 957

转载 QEMU的PCI总线与设备(下)

在上文中,我们在QEMU中已经成功的虚拟了一个PCI桥和一个PCI设备,接下来我们就来给他们分配固定的IO基地址。 要给PCI设备分配固定的IO基地址,那么就需要先了解PCI设备是如何刷新和分配IO基地址的。 1. PCI设备的重置与刷新PCI在需要的时候,如第一次启动,IO重叠等就需要重置PCI设备,并且清空PCI bar上面的地址信息。主要调用函数pci_device_rese

2011-11-28 17:18:41 981

转载 QEMU的PCI总线与设备(上)

最近研究了一下QEMU的虚拟PCI设备,打算虚拟一个PCI-PCI桥和一个PCI设备,设备挂在桥上,桥挂在pci主桥上。并且给设备固定映射一个IO基地址,但是发现还是件头疼的事情,经过几天的辛苦,终于算是有点收获,和大家分享一下,有什么问题希望大家支持,一起讨论,共同提高。 申明:本文主要针对x86架构进行说明。 1. PCI 结构简介为了大家更加容易的理解后文,先来回顾一下PCI总线

2011-11-28 17:18:13 2008 1

转载 qemu-kvm 中断虚拟化

中断,这个概念相信大家已经不陌生了,我也没什么资格来介绍中断,就简单的说一下。我认为它从宏观上看可以分为软件部分和硬件部分。软件部分:软件部分在操作系统中实现,如Linux中断的x86,每一个中断对应一个中断门,中断门中包含中断处理函数(ISR或者别的)地址,优先级等等。CPU可以通过LIDT加载这个描述符表,跳转到指定的中断门。硬件部分:中断硬件部分就是产生中断脉冲,传给中断控制

2011-11-28 17:17:02 2172

转载 kvm-qemu 设备IO虚拟化

1. 虚拟设备的IO地址注册 如我们所知,KVM虚拟机的设备模拟是在QEMU中实现的,而KVM实现的实质上只是IO的拦截。换句话说,真正的虚拟设备IO地址注册是在QEMU代码里面实现的。在QEMU中,在初始化我们的硬件设备的时候需要注册我们的IO空间,在这里有下面两种IO注册方法:(1) PIO(port IO) 端口IO(2) MIO(memory may IO)内存映射IO

2011-11-28 17:08:20 2698

转载 qemu源码架构

前言:本文主要概括了QEMU的代码结构,特别从代码翻译的角度分析了QEMU是如何将客户机代码翻译成TCG代码和主机代码并且最终执行的过程。并且在最后描述了QEMU和KVM之间联系的纽带。申明:本文前面部分从qemu detailed study第七章翻译而来。 1.代码结构如我们所知,QEMU是一个模拟器,它能够动态模拟特定架构的CPU指令,如X86,PPC,ARM等等。QEMU模

2011-11-28 16:48:03 3103 1

转载 Bottom halves and Deferring Work 中断

中断句柄只是中断处理的第一部分,因为下面一些限制,必须要有另外一部分来完整的处理中断:    1.中断句柄是异步运行的,只要发生中断就会进入中断句柄,而中断的发生是异步的,也就是说随时可以发生。因此中断句柄可能会中断一些正在执行的重要代码,包括另外一个中断句柄。    2.中断句柄运行时需要关中断,最好情况是禁止了当前的中断级(未设置SA_INTERRUPT),最坏的情况是所有的中断被中断

2011-11-25 14:05:53 537

原创 qemu-kvm live migrate 流程

1.  入口函数:do_migrate()处理以下几件事:1)判断当前migrate状态,如果为active,则退出;2)判读是否有block migrate的设备存在,如果存在,则退出;3)初始化;4)判断migrate协议,支持四种:TCP/UNIX/EXEC/FD5)savevm state6)migrate state2. 函数调用流程:以T

2011-11-25 11:13:00 739

原创 Eucalyptus 中 live migrate实现

1. 实现情况:目前Eucalyptus中live migrate实现,还只能在单集群内实现,跨集群还做不到。2. 实现方式:目前只能分两步来做:1)迁移实例;2)迁移实例状态信息;3. 问题:1) 目前检测动态迁移满足条件容易出错;2) 基于Xen的动态迁移并不稳定。

2011-11-24 19:52:09 303

原创 qemu-kvm kemari实验

1. kemari实验可以进行成功,使用的版本为:git clone git://kemari.git.sourceforge.net/gitroot/kemari/kemarigit clone git://kemari.git.sourceforge.net/gitroot/kemari/kemari next(该版本测试失败,动态迁移就失败了,不知何故)2.

2011-11-24 18:18:44 768

原创 qemu 定时器

qemu定时器模仿内核定时器:内核定时器函数:1)定义定时器: struct   timer_list   my_timer;2)初始化定时器:init_timer(&my_timer);   my_timer.expires = jiffies + delay;          /* 定时器超时时的节拍数 */my_timer.data = 0;

2011-11-24 14:51:28 616

原创 kvm event-tap 事件重放机制

1. 原理2. qemu实现流程

2011-11-23 15:38:56 295

原创 xen build on centos5.5

在centos5.5上编译xen-4.1.11. 解决依赖:yum install texinfo iasl dev862. 下载源码:xen-4.1.1.tar.gzwget http://bits.xensource.com/oss-xen/release/4.4.1/xen-4.4.1.tar.gzlwip-1.3.0.tar.gzgrub-0.97.ta

2011-11-23 15:03:26 471

原创 qemu-kvm savevm/loadvm 流程

1. 流程:1)测试设备是否支持snapshot保存2)停止虚拟机3)保存虚拟机状态4)创建快照5)恢复虚拟机2. 函数调用:1) 入口函数     do_savevm()2) 函数调用:1) bdrv_snapshots()2) vm_stop()3) qemu_savevm_state()4) bdrv_snaps

2011-11-23 14:16:12 1485

原创 qemu migration

1. qemu migration入口函数主要做以下工作:1)分析传入参数;2)  创建管道和进程;3)调用start_migration()开始迁移;4)suspend qemu monitor;+/* Migration monitor command */++void do_migrate(int detach, const char *uri)

2011-11-21 17:41:12 621

原创 Qemu migration

+/* Migration monitor command */++void do_migrate(int detach, const char *uri)+{+ MigrationState *s;+ int fds[2];+ const char *ptr;+ char *command = NULL;+ char **argv = NULL;+

2011-11-21 17:38:57 62

转载 the first edition qemu migration patches

I wanted to post a draft of my QEMU live migration patch. I think there's a lingering memory allocation problem. I also need to implement ARP forwarding and a TCP transport stream.However, I tho

2011-11-21 17:27:47 77

原创 qemu-kvm

1. 源码编译qemu-kvm版本:git clone git://git.kernel.org/pub/scm/virt/kvm/qemu-kvm.gitkemari版本:git clone git://kemari.git.sourceforge.net/gitroot/kemari/kemari或者:git clone git://kemar

2011-11-21 13:42:38 1580 2

原创 C排序

1. 选择排序选择排序的第i次循环中选取对应的第i小的数放在list[i]中。选择排序是不稳定的,算法复杂度是O(n ^2 )。 循环思想:第i次遍历,是把L[i+1]到L[n]的所有数与L[i]进行比较,并选出其中最小的数放到L[i] 里。每一轮遍历只能排好一个数。void selection_sort(int *l, int n){

2011-11-17 10:00:49 248

原创 网络并发请求处理

处理网络并发请求,传统的方法有:循环:早期系统使用简单的循环选择解决方案,即循环遍历打开的网络连接的列表,判断是否有要读取的数据。这种方法既缓慢(尤其是随着连接数量增加越来越慢),又低效(因为在处理当前连接时其他连接可能正在发送请求并等待响应)。在系统循环遍历每个连接时,其他连接不得不等待。如果有 100 个连接,其中只有一个有数据,那么仍然必须处理其他 99 个连接,才能轮到真正需要处理的连

2011-11-05 11:04:32 1248

原创 Eucalyptus CLC源码分析与调试

1. Eucalyptus CLC源码架构2. Eucalyptus CLC源码分析

2011-09-20 16:40:24 123

原创 xen domu config file

1. 全虚拟化配置文件exam1:name = "new"kernel = "/usr/lib/xen/boot/hvmloader"memory = 1024builder = "hvm"device_model = "/usr/lib64/xen/bin/qemu-dm"boot = "d"disk = ['file:/mnt/iso/CentOS_5.5.

2011-08-17 14:42:25 434

转载 Eucalyputs配置虚拟机网络和启动虚拟机

Eucalyputs配置虚拟机网络和启动虚拟机http://blog.csdn.net/qq250941970/article/details/6065833Eucalyputs中启动实例不能通过外网访问的问题问题描述:eucalyputs在启动虚拟机时是一个IP一对一的nat转

2011-07-29 13:46:42 521

转载 LCD背光原理

<br />参考:http://www.emsym.com/blog/?p=1221<br />http://hi.baidu.com/mythqcf/blog/item/b8683a3c9064d33670cf6c9e.html<br />1,原理<br />pwm是对模拟信号进行数字采样,以数字方式控制模拟信号;<br /> <br />2,实例<br />假设模拟信号为5伏,当占空比分别为10%和50%时,通过pwd得到的电压相当于0.5v 和 2.5v;<br /> <br />3,工作<br />

2010-09-18 11:06:00 514

转载 LCD背光原理

<br />1,原理<br />pwm是对模拟信号进行数字采样,以数字方式控制模拟信号;<br /> <br />2,实例<br />假设模拟信号为5伏,当占空比分别为10%和50%时,通过pwd得到的电压相当于0.5v 和 2.5v;<br /> <br />3,工作<br /> <br />在驱动中要做的事情就是,控制pwm的寄存器,<br /><br /><br /> <br />上图1是lcd电路图,下面是截取pwm部分,其中EN就是pwm输入,输出就是pwm相对应的亮度。<br /><br />

2010-09-18 11:04:00 491

转载 log

<br />http://blog.csdn.net/knock/archive/2010/04/21/5511255.aspx<br /> <br />为了调试,必须要将log怎么打印的搞清楚,于是有了以下的分析。<br />我们通常在程序中插入LOGD(..),LOGE(..)之类的语句,但什么情况下可以查看这些打印消息呢?<br />首先,来到定义处:system/core/include/cutils/log.h,在开头就可以看到<br />#ifndef LOG_TAG<br />#d

2010-08-26 22:36:00 271

转载 opengl pipeline

<br /><br />渲染:计算机根据模型创建图象。模型(或物体)是由几何图元构成的,而几何图元是通过顶点来指定的。最终渲染的图象由屏幕像素组成。像素(pixel)是显示硬件能够放置到屏幕上的最小的可视元素。有关像素的信息(如颜色)在系统内存中被组织为位面(bitplane)。位面构成了帧缓存(包含图形显示设备为控制屏幕上所有像素的颜色和亮度所需的信息)。 <br />1、使用几何图元建立模型,从而得到物体的数学描述。(OpenGL将点、直线、多边形、图形和位图视为图元); <br />

2010-08-16 15:30:00 488

Cocos2D-X《欢乐麻将》手游完整源码

Cocos2D-X《欢乐麻将》手游完整源码

2017-04-24

opengl 光线追踪

opengl光线追踪算法实现原理与源代码演示 希望对大家有帮助

2009-07-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除