container_of,是linux内核中一个精妙绝伦的宏。上年在南京开发新产品应用程序时,一个同事借用linux的实现,在应用程序中实现了该宏。之前,曾经弄懂过它,许久未接触linux了,对它有点陌生了。只清楚记得它的作用就是:根据结构体成员得到该结构体指针。

在网上看了多篇关于container_of的解释,觉得还是华清远见程姚根讲得简单透彻。

阅读全文 »

 


等待队列在linux内核中有着举足轻重的作用,很多linux驱动都或多或少涉及到了等待队列。因此,对于linux内核及驱动开发者来说,掌握等待队列是必须课之一。 Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。它有两种数据结构:等待队列头(wait_queue_head_t)和等待队列项(wait_queue_t)。 阅读全文 »

 


今天在看CS8900的驱动时,发现其驱动的模块加载函数是init_module(),由于看到大多数的驱动用的模块加载函数大多是module_init()函数,所以一时没缓过神来,总是在找CS8900的加载函数。

那么,module_init()和init_module()这两个加载函数有什么区别吗?

init_module是默认的模块的入口,如果你想指定其他的函数作为模块的入口就需要module_init函数来指定。

init_module()是真正的入口,module_init是宏,如果在模块中使用,最终还是要转换到init_module()上。如果不是在模块中使用,module_init可以说没有什么作用。总之,使用module_init方便代码在模块和非模块间移植。

© 2012 velep.com | reille blog | 管理| 粤ICP备12094833号-2| 谷歌地图| 百度地图| Suffusion theme|Sayontan Sinha

无觅相关文章插件,快速提升流量