• <div id="0yoao"><tr id="0yoao"></tr></div>
    <dl id="0yoao"></dl>
  • <sup id="0yoao"></sup>
    <div id="0yoao"><tr id="0yoao"></tr></div>
  • <div id="0yoao"><tr id="0yoao"></tr></div>
  • linux kernel的中断子系?#25345;?#20843;):softirq

    作者:linuxer 发布于:2014-10-24 11:53 分类:中断子系统

    对于中断处理而言,linux将其分成了两个部分,一个叫做中断handler(top half),是全程关闭中?#31995;模?#21478;外一部分是deferable task(bottom half),属于不那么紧急需要处理的事情。在执行bottom half的时候,是开中?#31995;摹?#26377;多种bottom half的机制,例如:softirq、tasklet、workqueue或是直接创建一个kernel thread来执行bottom half(这在旧的kernel驱动中常见,现在,一个理智的driver厂商是不会这么做的)。本文主要讨论softirq机制。由于tasklet是 基于softirq的,因此本文?#19981;?#25552;及tasklet,但主要是从需求层面考虑,不会涉及其具体的代码实现。

    在普通的驱动中一般是不会用 到softirq,但是由于驱动经常使用的tasklet是基于softirq的,因此,了解softirq机制有助于撰写更优雅的driver。 softirq不能动态分配,都是静态定义的。内核已经定义了若干种softirq number,例如网络数据的收发、block设备的数据访问(数据量大,通信带宽高),timer的deferable task(时间方面要求高)。本文的第二章讨论了softirq和tasklet这两种机制有何不同,分别适用于什么样的场景。第三章描述了一些 context的概念,这是要理解后续内容的基础。第四章是进入softirq的实现,对比hard irq来解析soft irq的注册、触发,调度的过程。

    注:本文中的linux kernel的版本是3.14

    阅读全文>>

    标签: 软中断 softirq

    评论(125) 浏览(47823)

    防冲突机制介绍

    作者:cherishui 发布于:2014-10-24 11:35 分类:基础技术

    本文介绍了通?#35835;?#22495;中的两种防冲突机制,CSMA/CD和CSMA/CA.

    阅读全文>>

    标签: CSMA/CA 防冲突

    评论(2) 浏览(7764)

    Linux common clock framework(2)_clock provider

    作者:wowo 发布于:2014-10-23 23:49 分类:电源管理子系统

    本文接上篇文章,从clock driver的?#23884;齲?#20998;析怎么借助common clock framework管理系统的时钟资?#30784;?#25442;句?#20843;擔?#23601;是怎么编写一个clock driver。

    由于kernel称clock driver为clock provider(相应的,clock的使用者为clock consumer),因此本文遵循这个规则,统一以clock provider命名。

    阅读全文>>

    标签: Linux framework clock provider dts

    评论(29) 浏览(19657)

    arm64 linux移植

    作者:forion 发布于:2014-10-23 17:02

    arm64大潮来势汹汹,不知?#26469;?#23478;有没有在搞64位cpu呢?

    arm64 linux 只支持device tree了,大家要努力学好dt啦。可以去参考楼主之前的dt文章。

    arm64 架构已经有很大的改变啦,不知道楼主什么时候给大家普及呢?哈哈。

    Porting to ARM 64-bit.pdf

    32-bit to 64-bit portingv3.pdf

    上面两篇pdf在网上可以找到,可以初步的了解aarch32与aarch64 porting注意事项。

    标签: Linux arm64 aarch64

    评论(10) 浏览(10005)

    linux内核同步

    作者:dashijian 发布于:2014-10-21 16:41

    同步就是避免并发和防止竞争条件。有关临界区的例子我就不举了,随便一本操作系统的书上都有。锁机制的提出也算解决了一些问题,我们待会再说,现在只要知道锁的使用是自愿的,非强制的。linux自身也提供了几种不同的锁机制,区别主要在于当锁被争用时,?#34892;?#20250;简单地执行等待,而?#34892;?#38145;会使当前任务睡眠直到锁可用为止,这个后面细说。真正的困?#35328;?#20110;发现并辨认出真正需要共享的数据和相应的共享区。先来说一些?#34892;?#30340;话:大多数内核数据结构都需要加锁,如果有其他执行线程可以访问这些数据,那么就给这些数据?#30001;夏持中?#24335;的锁。如果任何其他什么东西能看到它,那么就要锁住它。简而言之,几乎访问所有的内核全?#30452;?#37327;和共享数据都需要?#25345;中?#24335;的同步方法。有关加锁的细节,在嵌套的锁时,要保证以相同的顺序获取锁,不要重复请求同一个锁,释放时,最?#27809;?#26159;以获得锁的相?#27492;?#24207;来释放锁。加锁的粒度用来描述加锁保护的数据规模。接下来就开始讨论真正的同步方法:

           1.原子操作。就是指执行过程不被打?#31995;?#25805;作,是 不能够被分割的指令。关于这个linux内核提供了两组原子操作接口:原子整数操作和原子位操作。好,先来说说这个原子整数操作。针对整数的原子操作只能对atomic_t类型的数据进行处理。需要说明的是,尽管linux支持的所有机器?#31995;?#25972;形数据都是32位的,但是使用atomic_t的代码只能将该类型的数据当作24位来用,原因就不说了。使用原子操作需要的声明在asm/atomic.h中。原子整数操作列表如下;


     在编?#21019;?#30721;的时候,能使用原子操作的时候,就尽量不要使用复杂的加锁机制,因为大多数或者100%情况下,原子操作比更复杂的同步方法相比较而言,给系统带来?#30446;?#38144;小,对高速缓存行(cache-line)的影响也很小。

           对应于原子整数操作,还有一种原子操作就是原子位操作,它们是与体系结构相关的操作,定义在文件<asm/bitops.h>,它?#23884;?#26222;通的内存地?#26041;?#34892;操作的。它的参数是一个指针和一个位号,第0位是给定地址的最低?#34892;?#20301;。这里没有想atomic_t一样的数据结构,只要指针指向任?#34583;?#26395;的数据,就可以进行操作。原子位操作函数列表如下:

    同时,内核还提供了一组与上述操作对应的非原子位函数,操作完全相同,不同在于不保证原子性且名?#26234;?#32512;多了两个下划线,例如与test_bit()对应的非原子形式是__test_bit().如果不需要原子操作,这?#38381;?#20123;函数的执行效率可能更高。内核还提供了两个函数用来从指定的地址开始搜索第一个被设置(或未被设置)的位:

    评论(0) 浏览(3927)

    Linux common clock framework(1)_概述

    作者:wowo 发布于:2014-10-20 23:06 分类:电源管理子系统

    common clock framework是用来管理系统clock资源的子系统,根据职能,可分为三个部分:

    1)向其它driver提供操作clocks的通用API。

    2)实现clock控制的通用逻辑,这部分和?#24067;?#26080;关。

    3)将和?#24067;?#30456;关的clock控制逻辑封装成操作函数集,交由底层的platform开发者实现,由通用逻辑调用。

    因此,蜗蜗会将clock framework的分析文章分为3篇:

    第一篇为概述和通用API的使用说明,面向的读者是使用clock的driver开发者,目的是掌握怎么使用clock framework(就是本文);

    第二篇为底层操作函数集的解析和使用说明,面向的读者是platform clock driver?#30446;?#21457;者,目的是掌握怎么借助clock framework管理系统的时钟资源;

    第三篇为clock framework的内部逻辑解析,面向的读者是linux kernel爱好者,目的是理解怎么实现clock framework。

    注1:任何framework的职能分类都是如此,因此都可以按照这个模式分析。

    阅读全文>>

    标签: Linux framework clock API

    评论(30) 浏览(28907)

    Linux内核同步机制之(二):Per-CPU变量

    作者:linuxer 发布于:2014-10-16 11:17 分类:内核同步机制

    本文主要介绍了linux kernel中的per cpu变量的源由,接口以及具体的实现。

    阅读全文>>

    标签: 内核同步 Per-CPU变量

    评论(34) 浏览(29839)

    Linux内核同步机制之(一):原子操作

    作者:linuxer 发布于:2014-10-10 17:56 分类:内核同步机制

    本文主要描述了ARM linux中的原子操作相关的内容。

    阅读全文>>

    标签: 原子操作 atomic 内核同步

    评论(52) 浏览(27524)

    Linux电源管理(11)_Runtime PM之功能描述

    作者:wowo 发布于:2014-10-8 23:32 分类:电源管理子系统

    终于可以写Runtime PM了,说实话,蜗蜗有点小激动。因为从个人的?#23884;?#35762;,我很推崇使用Runtime PM进行日常的动态电源管理,而不是suspend机制。

    软件工程的基本思想就是模块化:高内聚和低耦合。通俗地讲呢,就是“各人自扫门前雪?#20445;?#23613;量扫好自己的(高内聚),尽量不和别人?#25442;ィ?#20302;耦合)。而Runtime PM正体现了这一思想?#22909;?#20010;设备(包括CPU)都处理好自身的电源管理工作,尽量以最低的能耗完成交代的任务,尽量在不需要工作的时候进入低功耗状态,尽量不和其它模块有过多耦合。每个设备都是最节省的话,整个系统一定是最节省的,最终达到无所谓睡、无所?#21483;?#30340;天人合一状态。

    讲到这里想到自己的一则趣事:大学时,蜗蜗是寝室长,但不爱打扫卫生,于是就提出一个口号,“不污染,不治理;谁污染,谁治理”。结果呢,大?#20063;?#23601;是了,呵呵。言归正传,开?#21450;傘?

    阅读全文>>

    标签: Linux PM 电源管理 runtime rpm

    评论(51) 浏览(39917)

    Copyright @ 2013-2015 蜗窝科技 All rights reserved. Powered by emlog
    连码三全中是什么
  • <div id="0yoao"><tr id="0yoao"></tr></div>
    <dl id="0yoao"></dl>
  • <sup id="0yoao"></sup>
    <div id="0yoao"><tr id="0yoao"></tr></div>
  • <div id="0yoao"><tr id="0yoao"></tr></div>
  • <div id="0yoao"><tr id="0yoao"></tr></div>
    <dl id="0yoao"></dl>
  • <sup id="0yoao"></sup>
    <div id="0yoao"><tr id="0yoao"></tr></div>
  • <div id="0yoao"><tr id="0yoao"></tr></div>