linux list

Posted gr-nick

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux list相关的知识,希望对你有一定的参考价值。

linux list

1. container_of

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

通过成员指针得到容器指针。

2. struct list_head

struct list_head {
    struct list_head *next, *prev;
};

3. list_entry

#define list_entry(ptr, type, member) /
    container_of(ptr, type, member)

4. list_for_each

#define list_for_each(pos, head) \  
    for (pos = (head)->next, prefetch(pos->next); pos != (head); \  
        pos = pos->next, prefetch(pos->next)) 

5. list_for_each_entry

    #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))

以上是关于linux list的主要内容,如果未能解决你的问题,请参考以下文章

[linux][c/c++]代码片段02

常见的代码片段

linux打开终端如何启动scala,如何在终端下运行Scala代码片段?

Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段

无法从 onListItemClick 开始片段

linux中怎么查看mysql数据库版本