M-book

求上得中, 求中得下, 求下得无!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2011年8月28日

摘要: 1.内存屏障(memory barrier) #define set_mb(var, value) do { var = value; mb(); } while (0) #define mb() __asm__ __volatile__ ("" : : : "memory")1)set_mb(),mb(),barrier()函数追踪到底,就是__asm__ __volatile__("":::"memory"),而这行代码就是内存屏障。 2)__asm__用于指示编译器在此插入汇编语句 3)__volatile_ 阅读全文

posted @ 2011-08-28 22:56 M-book 阅读(818) 评论(0) 推荐(1)

摘要: 推荐 volatile 提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有 volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序: short flag; void test() { do1(); while(flag==0); do2(); } 这段程序等待内存变量flag的值变为1(怀疑此处是0,有点疑问,)之后才运行do2()。变量flag的值由 阅读全文

posted @ 2011-08-28 22:56 M-book 阅读(190) 评论(0) 推荐(0)

摘要: 1、typedef int (init_fnc_t) (void);表示定义init_fnc_t为函数类型,该函数返回int型,无参数。而“init_fnc_t *init_sequence[]={cpu_init, board_init }”表示用init_fnc_t(函数类型)去定义一个一维指针数组,数组中的元素都是指针变量,而且都是指向函数的指针,这些函数返回值都是int型,无参数的。更明朗的说就是数组中的每个元素是用来存放函数入口首地址的。2、int (*init_fnc_t) (void);表示定义一个函数指针(返回值为int型,无参数的函数指针,存放的是函数的首地址),typede 阅读全文

posted @ 2011-08-28 22:55 M-book 阅读(938) 评论(0) 推荐(0)

摘要: typedef在C中真是一个神奇的东西,没有点事例真是很难理解:(回头看看那超烂的大学C教程,很多地方没写清楚,遇到问题时看不懂代码。u-boot中有这么一段代码。/*这里定义了一个新的数据类型init_fnc_t,*这个数据类型是参数为空,返回值为int的函数。*/typedef int (init_fnc_t) (void);/*init_sequence是一个指针数组,指向的是init_fnc_t类型的函数*/init_fnc_t *init_sequence[] = {cpu_init, /* basic cpu dependent setup */board_init, /* bas 阅读全文

posted @ 2011-08-28 22:55 M-book 阅读(223) 评论(0) 推荐(0)

2011年8月27日

摘要: 摘要: 在学习linux内核代码及一些开源软件的源码(如:DirectFB),经常可以看到有关__attribute__的相关使用。本文结合自己的学习经历,较为详细的介绍了__attribute__相关语法及其使用。GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。__attribute__书写特征是:__attribute__前后都有两个下划线,并切后面会紧跟一对原括弧,括弧里面是相应的__a 阅读全文

posted @ 2011-08-27 17:59 M-book 阅读(285) 评论(0) 推荐(0)

摘要: From http://hi.baidu.com/cygnusnow/blog/item/8b82000f871fcf2f6159f3de.htmlGNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。__attribute__书写特征是:__attribute__前后都有两个下划线,并切后面会紧跟一对原括弧,括弧里面是相应的__attribute__参数。__attribute__语法格式为:__ 阅读全文

posted @ 2011-08-27 16:45 M-book 阅读(190) 评论(0) 推荐(0)

2011年8月26日

摘要: Android、X windows、qt等众多应用对于linux系统中键盘、鼠标、触摸屏等输入设备的支持都通过、或越来越倾向于标准的input输入子系统。 因为input子系统已经完成了字符驱动的文件操作接口,所以编写驱动的核心工作是完成input系统留出的接口,工作量不大。但如果你想更灵活的应用它,就需要好好的分析下input子系统了。 一、input输入子系统框架 下图是input输入子系统框架,输入子系统由输入子系统核心层( Input Core ),驱动层和事件处理层(Event Handler)三部份组成。一个输入事件,如鼠标移动,键盘按键按下,joystick的移动等等通过 in. 阅读全文

posted @ 2011-08-26 18:18 M-book 阅读(412) 评论(0) 推荐(0)

2011年8月24日

摘要: Eric Fang 2010-02-04--------------------------------------------------------------本站分析linux内核源码,版本号为2.6.32.3转载请注明出处:http://ericfang.cublog.cn/--------------------------------------------------------------接上一篇文章继续分析。三.input_event事件的处理事件的处理的接口函数为input_event,在\linux\input.h中还定义了、 input_report_key、input 阅读全文

posted @ 2011-08-24 16:15 M-book 阅读(885) 评论(0) 推荐(0)

摘要: Eric Fang 2010-02-03--------------------------------------------------------------本站分析linux内核源码,版本号为2.6.32.3转载请注明出处:http://ericfang.cublog.cn/--------------------------------------------------------------接上一篇文章继续分析。二.Input handler的注册在Input device的注册中存在下列疑问:1, 匹配dev和handler时,input_handler_list上的handl 阅读全文

posted @ 2011-08-24 16:03 M-book 阅读(479) 评论(0) 推荐(0)

摘要: Eric Fang 2010-02-03--------------------------------------------------------------本站分析linux内核源码,版本号为2.6.32.3转载请注明出处:http://ericfang.cublog.cn/--------------------------------------------------------------在前面键盘驱动的分析中已经接触到了输入子系统,本文将结合键盘驱动,系统分析输入子系统。回想一下,在设备驱动匹配成功时,创建了一个input_dev并注册到输入子系统;在键盘中断处理例程中向输入 阅读全文

posted @ 2011-08-24 15:55 M-book 阅读(696) 评论(0) 推荐(0)