关于list_for_each_entry

来源:互联网 发布:为什么讨厌绿绿 知乎 编辑:程序博客网 时间:2024/04/29 11:33
 
 
关于SYS_CALL的定义
 
linux input设备的事件传递机制

关于list_for_each_entry  

2011-07-26 11:27:08|  分类:linux |  标签:|举报|字号 订阅

struct input_handler *handler;
static LIST_HEAD(input_handler_list);


list_for_each_entry(handler, &input_handler_list, node)
input_attach_handler(dev, handler);


#define list_for_each_entry(pos, head, member)   \
for (pos = list_entry((head)->next, typeof(*pos), member);\
    prefetch(pos->member.next), &pos->member != (head);\
    pos = list_entry(pos->member.next, typeof(*pos), member))

   
#define list_entry(ptr, type, member) \
container_of(ptr, type, member)
#define container_of(ptr, type, member) ({   \
const typeof( ((type *)0)->member ) *__mptr = (ptr);\
(type *)( (char *)__mptr - offsetof(type,member) );})

list_for_each_entry(type, head, member)

head组成的链表是由type.member为节点连接的。head是链表的头。
搜寻整个链表,对type类型的数据进行处理。



container_of(ptr, type, member)

ptr指向的是type.member类型的数据,用来推算出以ptr指向的对象作为成员的结构体的起始地址

0 0
原创粉丝点击