输入子系统框架: drivers/input/input.c list_add_tail(&handler->node, &input_handler_list); //放入链表 list_for_each_entry(dev, &input_dev_list, node)//对于每一个input_ ...
分类:
其他好文 时间:
2019-07-23 00:16:58
阅读次数:
104
1.offsetof(TYPE, MEMBER) offsetof是一个自定义的宏,其返回值是一个member成员在一个type类型的结构体中相对于结构体首地址的字节偏移量; 分析其工作原理: 1.(TYPE *)0将0地址强制转换成TYPE *类型指针 且可以认为,这个类型的结构体的首地址是0x0 ...
分类:
其他好文 时间:
2018-05-13 13:50:37
阅读次数:
167
~~~~ SPI 驱动框架 1. 枚举过程 drivers/spi/spi.c: spi_register_board_info / 对于每一个spi_master,调用spi_match_master_to_boardinfo / list_for_each_entry(master, &spi_ ...
分类:
其他好文 时间:
2018-03-08 02:41:52
阅读次数:
153
定义: 它实际上是一个 for 循环,利用传入的 pos 作为循环变量,从表头 head 开始,逐项向后(next 方向)移动 pos,直至又回head. 我们将for循环分解为一下三点: 1. for循环初始化 pos = list_entry((head)->next, typeof(*pos) ...
分类:
其他好文 时间:
2017-10-19 17:38:50
阅读次数:
184
i2c_add_driver i2c_register_driver driver->driver.bus = &i2c_bus_type; driver_register(&driver->driver); list_for_each_entry(adapter, &adapters, list) ...
分类:
其他好文 时间:
2016-09-02 20:19:18
阅读次数:
286
内核里面用list_for_each_entry实在太多了,定义在linux-3.10/include/linux/list.h: 要分析list_entry就得分析container_of,linux-3.10/include/linux/kernel.h: 宏定义的第一行:typeof(x)是g ...
分类:
其他好文 时间:
2016-08-03 23:58:27
阅读次数:
375
一、list_for_each
1.list_for_each原型
#define list_for_each(pos, head) for (pos = (head)->next, prefetch(pos->next); pos != (head); pos = pos->next, prefetch(pos->next))
它实际上是一个 for 循环,利用...
分类:
其他好文 时间:
2014-05-13 08:50:12
阅读次数:
506
linux内核中的list太好用了,可惜VC编译器不支持
typeof关键字,将linux内核中的list直接移植过来不能用修改所有与typeof相关的代码后,终于可以勉强在VC下运行起来了,但是还不完美,list_for_each_entry和list_for_each_entry_safe需要增...
分类:
其他好文 时间:
2014-05-09 08:57:19
阅读次数:
603