<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ls152121349的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ls152121349</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ls152121349]]></copyright><item><title><![CDATA[Concurrency Managed Workqueue之（四）：workqueue如何处理work]]></title><link>https://blog.youkuaiyun.com/ls152121349/article/details/51684035</link><guid>https://blog.youkuaiyun.com/ls152121349/article/details/51684035</guid><author>ls152121349</author><pubDate>Wed, 15 Jun 2016 17:36:50 +0800</pubDate><description><![CDATA[转载：http://www.wowotech.net/irq_subsystem/queue_and_handle_work.html

一、前言
本文主要讲述下面两部分的内容：
1、将work挂入workqueue的处理过程
2、如何处理挂入workqueue的work
 
二、用户将一个work挂入workqueue
1、queue_work_on函数
使用workqueue]]></description><category></category></item><item><title><![CDATA[Concurrency Managed Workqueue之（三）：创建workqueue代码分析]]></title><link>https://blog.youkuaiyun.com/ls152121349/article/details/51684030</link><guid>https://blog.youkuaiyun.com/ls152121349/article/details/51684030</guid><author>ls152121349</author><pubDate>Wed, 15 Jun 2016 17:36:13 +0800</pubDate><description><![CDATA[转载：http://www.wowotech.net/irq_subsystem/alloc_workqueue.html

一、前言
本文主要以__alloc_workqueue_key函数为主线，描述CMWQ中的创建一个workqueue实例的代码过程。
 
二、WQ_POWER_EFFICIENT的处理
__alloc_workqueue_key函数的一开始有如下的代码：

]]></description><category></category></item><item><title><![CDATA[Concurrency Managed Workqueue之（二）：CMWQ概述]]></title><link>https://blog.youkuaiyun.com/ls152121349/article/details/51684016</link><guid>https://blog.youkuaiyun.com/ls152121349/article/details/51684016</guid><author>ls152121349</author><pubDate>Wed, 15 Jun 2016 17:35:00 +0800</pubDate><description><![CDATA[转载：http://www.wowotech.net/irq_subsystem/cmwq-intro.html

一、前言
一种新的机制出现的原因往往是为了解决实际的问题，虽然linux kernel中已经提供了workqueue的机制，那么为何还要引入cmwq呢？也就是说：旧的workqueue机制存在什么样的问题？在新的cmwq又是如何解决这些问题的呢？它接口是如何呈现的呢（驱动工程师]]></description><category></category></item><item><title><![CDATA[Concurrency Managed Workqueue之（一）：workqueue的基本概念]]></title><link>https://blog.youkuaiyun.com/ls152121349/article/details/51683981</link><guid>https://blog.youkuaiyun.com/ls152121349/article/details/51683981</guid><author>ls152121349</author><pubDate>Wed, 15 Jun 2016 17:30:40 +0800</pubDate><description><![CDATA[转载：http://www.wowotech.net/irq_subsystem/workqueue.html

一、前言
workqueue是一个驱动工程师常用的工具，在旧的内核中（指2.6.36之前的内核版本）workqueue代码比较简单（大概800行），在2.6.36内核版本中引入了CMWQ（Concurrency Managed Workqueue），workqueue.c的代码膨]]></description><category></category></item><item><title><![CDATA[linux kernel的中断子系统之（九）：tasklet]]></title><link>https://blog.youkuaiyun.com/ls152121349/article/details/51683951</link><guid>https://blog.youkuaiyun.com/ls152121349/article/details/51683951</guid><author>ls152121349</author><pubDate>Wed, 15 Jun 2016 17:26:57 +0800</pubDate><description><![CDATA[转载：http://www.wowotech.net/irq_subsystem/tasklet.html

一、前言
对于中断处理而言，linux将其分成了两个部分，一个叫做中断handler（top half），属于不那么紧急需要处理的事情被推迟执行，我们称之deferable task，或者叫做bottom half，。具体如何推迟执行分成下面几种情况：
1、推迟到top half执]]></description><category></category></item><item><title><![CDATA[linux kernel的中断子系统之（八）：softirq]]></title><link>https://blog.youkuaiyun.com/ls152121349/article/details/51683897</link><guid>https://blog.youkuaiyun.com/ls152121349/article/details/51683897</guid><author>ls152121349</author><pubDate>Wed, 15 Jun 2016 17:21:02 +0800</pubDate><description><![CDATA[转载：http://www.wowotech.net/linux_kenrel/soft-irq.html

一、前言
对于中断处理而言，linux将其分成了两个部分，一个叫做中断handler（top half），是全程关闭中断的，另外一部分是deferable task（bottom half），属于不那么紧急需要处理的事情。在执行bottom half的时候，是开中断的。有多种bott]]></description><category></category></item><item><title><![CDATA[linux kernel的中断子系统之（七）：GIC代码分析]]></title><link>https://blog.youkuaiyun.com/ls152121349/article/details/51683879</link><guid>https://blog.youkuaiyun.com/ls152121349/article/details/51683879</guid><author>ls152121349</author><pubDate>Wed, 15 Jun 2016 17:19:37 +0800</pubDate><description><![CDATA[转载：http://www.wowotech.net/linux_kenrel/gic_driver.html

一、前言
GIC（Generic Interrupt Controller）是ARM公司提供的一个通用的中断控制器，其architecture specification目前有四个版本，V1～V4(V2最多支持8个ARM core，V3/V4支持更多的ARM core，主要用于A]]></description><category></category></item><item><title><![CDATA[Linux kernel的中断子系统之（六）：ARM中断处理过程]]></title><link>https://blog.youkuaiyun.com/ls152121349/article/details/51683817</link><guid>https://blog.youkuaiyun.com/ls152121349/article/details/51683817</guid><author>ls152121349</author><pubDate>Wed, 15 Jun 2016 17:13:51 +0800</pubDate><description><![CDATA[转载：http://www.wowotech.net/irq_handler.html

一、前言
本文主要以ARM体系结构下的中断处理为例，讲述整个中断处理过程中的硬件行为和软件动作。具体整个处理过程分成三个步骤来描述：
1、第二章描述了中断处理的准备过程
2、第三章描述了当发生中的时候，ARM硬件的行为
3、第四章描述了ARM的中断进入过程
4、第五章描述了ARM的中断退出过程]]></description><category></category></item><item><title><![CDATA[Linux kernel中断子系统之（五）：驱动申请中断API]]></title><link>https://blog.youkuaiyun.com/ls152121349/article/details/51683791</link><guid>https://blog.youkuaiyun.com/ls152121349/article/details/51683791</guid><author>ls152121349</author><pubDate>Wed, 15 Jun 2016 17:12:24 +0800</pubDate><description><![CDATA[转载：http://www.wowotech.net/linux_kenrel/request_threaded_irq.html

一、前言
本文主要的议题是作为一个普通的驱动工程师，在撰写自己负责的驱动的时候，如何向Linux Kernel中的中断子系统注册中断处理函数？为了理解注册中断的接口，必须了解一些中断线程化（threaded interrupt handler）的基础知识，这些]]></description><category></category></item><item><title><![CDATA[linux kernel的中断子系统之（四）：High level irq event handler]]></title><link>https://blog.youkuaiyun.com/ls152121349/article/details/51683773</link><guid>https://blog.youkuaiyun.com/ls152121349/article/details/51683773</guid><author>ls152121349</author><pubDate>Wed, 15 Jun 2016 17:10:23 +0800</pubDate><description><![CDATA[转载：http://www.wowotech.net/linux_kenrel/High_level_irq_event_handler.html

一、前言
当外设触发一次中断后，一个大概的处理过程是：
1、具体CPU architecture相关的模块会进行现场保护，然后调用machine driver对应的中断处理handler
2、machine driver对应的中断处理han]]></description><category></category></item><item><title><![CDATA[linux kernel的中断子系统之（三）：IRQ number和中断描述符]]></title><link>https://blog.youkuaiyun.com/ls152121349/article/details/51683755</link><guid>https://blog.youkuaiyun.com/ls152121349/article/details/51683755</guid><author>ls152121349</author><pubDate>Wed, 15 Jun 2016 17:08:46 +0800</pubDate><description><![CDATA[转载：http://www.wowotech.net/linux_kenrel/interrupt_descriptor.html

一、前言
本文主要围绕IRQ number和中断描述符（interrupt descriptor）这两个概念描述通用中断处理过程。第二章主要描述基本概念，包括什么是IRQ number，什么是中断描述符等。第三章描述中断描述符数据结构的各个成员。第四章描述了初]]></description><category></category></item><item><title><![CDATA[Linux kernel的中断子系统之（二）：IRQ Domain介绍]]></title><link>https://blog.youkuaiyun.com/ls152121349/article/details/51683736</link><guid>https://blog.youkuaiyun.com/ls152121349/article/details/51683736</guid><author>ls152121349</author><pubDate>Wed, 15 Jun 2016 17:07:00 +0800</pubDate><description><![CDATA[转载：http://www.wowotech.net/linux_kenrel/irq-domain.html

一、概述
在linux kernel中，我们使用下面两个ID来标识一个来自外设的中断：
1、IRQ number。CPU需要为每一个外设中断编号，我们称之IRQ Number。这个IRQ number是一个虚拟的interrupt ID，和硬件无关，仅仅是被CPU用来标识一个外]]></description><category></category></item><item><title><![CDATA[Linux kernel的中断子系统之（一）：综述]]></title><link>https://blog.youkuaiyun.com/ls152121349/article/details/51683704</link><guid>https://blog.youkuaiyun.com/ls152121349/article/details/51683704</guid><author>ls152121349</author><pubDate>Wed, 15 Jun 2016 17:03:57 +0800</pubDate><description><![CDATA[转载：http://www.wowotech.net/linux_kenrel/interrupt_subsystem_architecture.html

一、前言
一个合格的linux驱动工程师需要对kernel中的中断子系统有深刻的理解，只有这样，在写具体driver的时候才能：
1、正确的使用linux kernel提供的的API，例如最著名的request_threaded_ir]]></description><category></category></item><item><title><![CDATA[Linux 设备驱动--- 内核等待队列]]></title><link>https://blog.youkuaiyun.com/ls152121349/article/details/51612002</link><guid>https://blog.youkuaiyun.com/ls152121349/article/details/51612002</guid><author>ls152121349</author><pubDate>Wed, 08 Jun 2016 11:36:33 +0800</pubDate><description><![CDATA[等待队列：
          在 Linux 驱动程序设计中，可以使用等待队列来实现进程的阻塞.
          等待队列可以看作保存进程的容器，在阻塞进程时，将进程放入等待队列；

          当唤醒进程时，从等待队列中取出进程.



等待队列的 定义 和 初始化 wait_queue_head_t    DECLARE_WAIT_QUEUE_HEAD  ：
 ]]></description><category></category></item><item><title><![CDATA[mount命令]]></title><link>https://blog.youkuaiyun.com/ls152121349/article/details/51332400</link><guid>https://blog.youkuaiyun.com/ls152121349/article/details/51332400</guid><author>ls152121349</author><pubDate>Fri, 06 May 2016 16:02:16 +0800</pubDate><description><![CDATA[挂接命令(mount)
首先，介绍一下挂接(mount)命令的使用方法，mount命令参数非常多，这里主要讲一下今天我们要用到的。
命令格式：mount [-t vfstype] [-o options] device dir
其中：

1.-t vfstype 指定文件系统的类型，通常不必指定。mount 会自动选择正确的类型。常用类型有：
光盘或光盘镜像：iso9660
DOS ]]></description><category></category></item><item><title><![CDATA[Linux文件目录/etc/init和/etc/init.d的前世今生]]></title><link>https://blog.youkuaiyun.com/ls152121349/article/details/51332341</link><guid>https://blog.youkuaiyun.com/ls152121349/article/details/51332341</guid><author>ls152121349</author><pubDate>Fri, 06 May 2016 15:57:49 +0800</pubDate><description><![CDATA[转载：点击打开链接

目录[-]

两者对比起名的讲究：Our ancestors [3]Reference


两者对比
这段时间看linux内核启动过程，启动先要加载init进程（即1号进程）,然后是按运行级别去执行相关脚本和配置。但是cd /etc目录后会发现两个和init相关的目录：/etc/init和/etc/init.d。很多文章都介绍了/etc/init/ 和 /et]]></description><category></category></item><item><title><![CDATA[理解Linux系统/etc/init.d目录和/etc/rc.local脚本]]></title><link>https://blog.youkuaiyun.com/ls152121349/article/details/51332152</link><guid>https://blog.youkuaiyun.com/ls152121349/article/details/51332152</guid><author>ls152121349</author><pubDate>Fri, 06 May 2016 15:40:09 +0800</pubDate><description><![CDATA[一、关于/etc/init.d
     如果你使用过linux系统，那么你一定听说过init.d目录。这个目录到底是干嘛的呢？它归根结底只做了一件事情，但这件事情非同小可，是为整个系统做的，因此它非常重要。init.d目录包含许多系统各种服务的启动和停止脚本。它控制着所有从acpid到x11-common的各种事务。当然，init.d远远没有这么简单。（译者注：acpid 是linux操作系统]]></description><category></category></item><item><title><![CDATA[UNIX 高手的 10 个习惯]]></title><link>https://blog.youkuaiyun.com/ls152121349/article/details/51330261</link><guid>https://blog.youkuaiyun.com/ls152121349/article/details/51330261</guid><author>ls152121349</author><pubDate>Fri, 06 May 2016 11:30:43 +0800</pubDate><description><![CDATA[克服不良的 UNIX 使用模式
采用 10 个能够提高您的 UNIX® 命令行效率的好习惯——并在此过程中摆脱不良的使用模式。本文循序渐进地指导您学习几项用于命令行操作的技术，这些技术非常好，但是通常被忽略。了解常见错误和克服它们的方法，以便您能够确切了解为何值得采用这些 UNIX 习惯。

引言

当您经常使用某个系统时，往往会陷入某种固定的使用模式。有时，您没有养成以尽可能最好的方式]]></description><category></category></item><item><title><![CDATA[tar命令]]></title><link>https://blog.youkuaiyun.com/ls152121349/article/details/51329999</link><guid>https://blog.youkuaiyun.com/ls152121349/article/details/51329999</guid><author>ls152121349</author><pubDate>Fri, 06 May 2016 11:09:03 +0800</pubDate><description><![CDATA[解压
语法：tar [主选项+辅选项] 文件或者目录
使用该命令时，主选项是必须要有的，它告诉tar要做什么事情，辅选项是辅助使用的，可以选用。

主选项：

c 创建新的档案文件。如果用户想备份一个目录或是一些文件，就要选择这个选项。相当于打包。
x 从档案文件中释放文件。相当于拆包。
t 列出档案文件的内容，查看已经备份了哪些文件。
特别注意，在参数的下达中， c/x/t 仅]]></description><category></category></item><item><title><![CDATA[linux内核启动第二阶段之setup_arch()函数分析-2.6.36]]></title><link>https://blog.youkuaiyun.com/ls152121349/article/details/50563570</link><guid>https://blog.youkuaiyun.com/ls152121349/article/details/50563570</guid><author>ls152121349</author><pubDate>Fri, 22 Jan 2016 18:01:47 +0800</pubDate><description><![CDATA[执行setup_arch()函数
回到start_kernel当中，569行，调用setup_arch函数，传给他的参数是那个未被初始化的内部变量command_line。这个setup_arch()函数是start_kernel阶段最重要的一个函数，每个体系都有自己的setup_arch()函数，是体系结构相关的，具体编译哪个体系的setup_arch()函数，由顶层Makefile中的ARC]]></description><category></category></item></channel></rss>