list_head数据结构分析
来源:互联网 发布:无锡网络外包 编辑:程序博客网 时间:2024/06/07 22:22
1、list_head结构体的定义
struct list_head { struct list_head *next, *prev;};list_head结构包含两个指针成员,一个用于指向前一个节点,next用于指向下一个节点。
2、LIST_HEAD_INIT宏定义
#define LIST_HEAD_INIT(name) { &(name), &(name) }该宏定义用于初始化结构变量name,让该结构的next,prev指针都指向自身,等同于代码如下:
struct list_head name ={ &(name), &(name) };
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)该宏定义为计算结构体中成员MEMBER的地址偏移,(TYPE *)0为把0强制转换成TYPE类型的指针,即该TYPE类型成员的首地址为0,((TYPE*)0)->member为取该成员的偏移地址。
4、container_of(ptr, type, member)宏定义
#define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *)__mptr - offsetof(type,member) );})该宏定义的作用是通过结构体中某个成员的地址获得整个结构体的首地址,ptr为结构体中某个成员的实际地址,在实际应用中,ptr应该和member*的类型一致
0 0
- list_head数据结构分析
- Linux内核list_head分析
- 内核数据结构list_head的使用
- linux 内核分析之list_head
- linux 内核分析之list_head
- linux 内核分析之list_head
- linux 内核分析之list_head
- linux 内核分析之list_head
- linux 内核分析之list_head
- linux 内核分析之list_head
- linux 内核分析之list_head
- linux 内核分析之list_head
- Linux内核中LIST_HEAD分析
- linux 内核分析之list_head
- linux 内核分析之list_head
- linux 内核分析之list_head
- linux 内核分析之list_head
- linux 内核分析之list_head
- C++第七次实验---最大公约数和最小公倍数
- 算法 - 梯度下降法
- linux 命令 scp
- 各个Android 市场的开发者的网址
- 什么是JDBC
- list_head数据结构分析
- mysql sql执行顺序
- struts2的Action访问Servlet的几种方式和全局result
- Java并发编程-ThreadFactory接口
- picasso 图片缓存库介绍
- 使用shiro进行登录校验;自定义realm的实现
- 【设计模式】Singleton Pattern 单例模式
- leetcode 223 Rectangle Area C++
- bzoj3555 企鹅QQ