码迷,mamicode.com
首页 > 系统相关 > 详细

Linux 驱动程序中相关函数注释汇总(跟新中)

时间:2015-06-03 15:43:41      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:linux驱动


1、ARRAY_SIZE
宏,是求设备结构体中设备的个数
 
定义在linux/kernel.h中
 
#define ARRAY_SIZE(arr)(sizeof(arr)/sizeof((arr)[0]) + __must_be_array(arr))
 
sizeof(arr)/sizeof((arr)[0])是求出设备的个数,__must_be_array(arr)是防止被吴用,比如用指针而不是数组上。


2、INT_WORK
 
以前内核里对这个函数是这样定义的 #define INIT_WORK(_work, _func, _data),可以理解为INIT_WORK会在你定义的_work工作队列里面增加一个工作任务,该任务就是_func。_func这个任务会需要一些数据作为参数,这个参数就是通过_data传递的。
 
       do{                                                           /
                 (_work)->data = (atomic_long_t) WORK_DATA_INIT();      /
                    INIT_LIST_HEAD(&(_work)->entry);                       /
                    PREPARE_WORK((_work),(_func));                        /
          } while (0)
    
      #define INIT_DELAYED_WORK(_work,_func)                        /
            do{                                                   /
                    INIT_WORK(&(_work)->work,(_func));            /
                  init_timer(&(_work)->timer);                   /
             } while (0)
 

3、container_of()
 
#define container_of(ptr, type, member)({                     
const typeof(((type *)0)->member ) *__mptr = (ptr);   
(type *)( (char*)__mptr - offsetof(type,member) );})
 
(char *)__mptr转换为字节型指针。(char *)__mptr -offsetof(type,member) )用来求出结构体起始地址(为char *型指针),然后(type*)( (char *)__mptr - offsetof(type,member) )在(type *)作用下进行将字节型的结构体起始指针转换为type *型的结构体起始指针。
 
它的作用显而易见,那就是根据一个结构体变量中的一个域成员变量的指针来获取指向整个结构体变量的指针。


Linux 驱动程序中相关函数注释汇总(跟新中)

标签:linux驱动

原文地址:http://blog.csdn.net/xy010902100449/article/details/46341343

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!