<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[慢慢游]]></title><description><![CDATA[内核、虚拟化]]></description><link>https://blog.youkuaiyun.com/LPSTC123</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; LPSTC123]]></copyright><item><title><![CDATA[softirq分析]]></title><link>https://blog.youkuaiyun.com/LPSTC123/article/details/50224913</link><guid>https://blog.youkuaiyun.com/LPSTC123/article/details/50224913</guid><author>LPSTC123</author><pubDate>Tue, 08 Dec 2015 21:48:54 +0800</pubDate><description><![CDATA[判断当前上下文类型每个cpu有一个per-cpu类型的int变量__preempt_count，它描述了当前抢占信息。 
该变量作用划分如下: *         PREEMPT_MASK:    0x000000ff
 *         SOFTIRQ_MASK:    0x0000ff00
 *         HARDIRQ_MASK:    0x000f0000
 *]]></description><category></category></item><item><title><![CDATA[fs_initcall、early_initcall、__init宏]]></title><link>https://blog.youkuaiyun.com/LPSTC123/article/details/50223567</link><guid>https://blog.youkuaiyun.com/LPSTC123/article/details/50223567</guid><author>LPSTC123</author><pubDate>Tue, 08 Dec 2015 20:20:51 +0800</pubDate><description><![CDATA[fs_initcall、early_initcall...分析

在内核代码中经常可以看到类似fs_initcall\early_initcall\late_initcall这样的宏，这些宏有什么作用？如何实现的？下面来具体分析

具体定义

在include/linux/init.h中可以找到这些宏的定义

/*
 * Early initcalls run before ini]]></description><category></category></item><item><title><![CDATA[virtio-blk后端处理-请求接收、解析、提交]]></title><link>https://blog.youkuaiyun.com/LPSTC123/article/details/45171515</link><guid>https://blog.youkuaiyun.com/LPSTC123/article/details/45171515</guid><author>LPSTC123</author><pubDate>Tue, 21 Apr 2015 15:57:06 +0800</pubDate><description><![CDATA[在“virtio-blk后端处理”这一系列中将分析Qemu对guest中发送过来的请求是如何进行处理的。大致想了下。这个系列分成如下几个部分： 
- Qemu接收、解析、提交请求 
- IOThread中的处理 
- 执行请求 
- 请求完成 
- dataplane情况下的处理这个文件是这系列的第一部分，主要分析Qemu收到请求到将其派发到线程的过程。这是不考虑dataplane的情况 
现在Qe]]></description><category></category></item><item><title><![CDATA[Qemu-kvm的ioeventfd创建与触发的大致流程]]></title><link>https://blog.youkuaiyun.com/LPSTC123/article/details/45111949</link><guid>https://blog.youkuaiyun.com/LPSTC123/article/details/45111949</guid><author>LPSTC123</author><pubDate>Sat, 18 Apr 2015 11:43:16 +0800</pubDate><description><![CDATA[在使用virtio-blk的情况时，virtio notify使用的ioeventfd机制，原因是为了提高性能，能够较快速的回到guest中运行。具体是如何建立这个ioeventfd的呢？流程理出来了，细节没看：]]></description><category></category></item><item><title><![CDATA[KVM虚拟机IO处理过程(二) ----QEMU/KVM I/O 处理过程]]></title><link>https://blog.youkuaiyun.com/LPSTC123/article/details/45013925</link><guid>https://blog.youkuaiyun.com/LPSTC123/article/details/45013925</guid><author>LPSTC123</author><pubDate>Sun, 12 Apr 2015 21:05:06 +0800</pubDate><description><![CDATA[原址：http://blog.youkuaiyun.com/dashulu/article/details/17090293 

   接着KVM虚拟机IO处理过程中Guest Vm IO处理过程(http://blog.youkuaiyun.com/dashulu/article/details/16820281),本篇文章主要描述IO从guest
 vm跳转到kvm和qemu后的处理过程.

    首先回]]></description><category></category></item><item><title><![CDATA[Qemu中coroutine机制的实现]]></title><link>https://blog.youkuaiyun.com/LPSTC123/article/details/45009819</link><guid>https://blog.youkuaiyun.com/LPSTC123/article/details/45009819</guid><author>LPSTC123</author><pubDate>Sun, 12 Apr 2015 14:26:05 +0800</pubDate><description><![CDATA[最近在看virtio的代码，看到virtio后端时发现在Qemu处理IO的时候使用了coroutine，之前对coroutine不了解，因此专门找了点资料学习并分析了下Qemu中的实现，于是做个笔记。Qemu貌似提供了好几种coroutine的实现方式(gthread、ucontext、sigalstack)，我只看了利用ucontext实现的部分。
网上有一篇同主题的博文（http://www]]></description><category></category></item><item><title><![CDATA[ucontext-人人都可以实现的简单协程库]]></title><link>https://blog.youkuaiyun.com/LPSTC123/article/details/45007837</link><guid>https://blog.youkuaiyun.com/LPSTC123/article/details/45007837</guid><author>LPSTC123</author><pubDate>Sun, 12 Apr 2015 09:54:26 +0800</pubDate><description><![CDATA[1.干货写在前面



原址：http://blog.youkuaiyun.com/qq910894904/article/details/41911175




协程是一种用户态的轻量级线程。本篇主要研究协程的C/C++的实现。
首先我们可以看看有哪些语言已经具备协程语义：

比较重量级的有C#、erlang、golang*轻量级有python、lua、javascript、rub]]></description><category></category></item><item><title><![CDATA[virtio-blk请求发起]]></title><link>https://blog.youkuaiyun.com/LPSTC123/article/details/44983707</link><guid>https://blog.youkuaiyun.com/LPSTC123/article/details/44983707</guid><author>LPSTC123</author><pubDate>Fri, 10 Apr 2015 19:18:01 +0800</pubDate><description><![CDATA[vitrio-blk请求发送source code：3.19.3 
较新的内核中(从哪个版本开始的没去考证)virtio-blk使用了blk-mq模型，先看一下virtio-blk初始化的时候的和blk-mq相关的设置(在virtblk_probe函数中): 
1.blk-mq回调函数族：        vblk->tag_set.ops = &virtio_mq_ops;ops是blk-mq模型中]]></description><category></category></item><item><title><![CDATA[virtio-blk初始化]]></title><link>https://blog.youkuaiyun.com/LPSTC123/article/details/44961579</link><guid>https://blog.youkuaiyun.com/LPSTC123/article/details/44961579</guid><author>LPSTC123</author><pubDate>Thu, 09 Apr 2015 16:12:37 +0800</pubDate><description><![CDATA[virtio-blk初始化source code: 3.19.3 
(ps:如有错误请大家留言指正，每晚我会查看一下；若有幸被转载或引用请注明下，写写) 
 
对于virtio-blk设备，virtio-bus的probe回调函数会调用对应驱动的probe回调函数，这里就是virtblk_probe函数来进行初始化操作。当此函数执行完成的时候，virtio-blk相关的数据结构也就建立完成了。]]></description><category></category></item></channel></rss>