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 阅读(804) 评论(0) 推荐(1) 编辑

摘要: 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。(1)先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容char a = 'A'; // global variablevoid msg(){printf("Hello\n");}下面是main.c的内容int main(void){extern char a; // extern variable m 阅读全文

posted @ 2011-08-28 22:56 M-book 阅读(222) 评论(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 阅读(215) 评论(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 阅读(926) 评论(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 阅读(279) 评论(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 阅读(183) 评论(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 阅读(398) 评论(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 阅读(868) 评论(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 阅读(470) 评论(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 阅读(686) 评论(0) 推荐(0) 编辑