linux驱动开发--内核链表
来源:互联网 发布:编程语言发展趋势 编辑:程序博客网 时间:2024/05/17 02:21
1、内核链表定义
在<Linux/list.h>中定义
内核链表结构体不包含数据域,只包含维护链表的指针域。
内核链表被包含在其他数据结构体中使用。
初始化链表头INIT_LIST_HEAD函数
void INIT_LIST_HEAD(struct list_head *list);
list:待初始化链表头
插入节点list_add函数
void list_add(struct list_head *new, struct list_head *head);
void list_add_tail(struct list_head *new, struct list_head *head);
new:待插入到链表的新节点
head:待插入到链表的链表头
删除节点list_del函数
void list_del(struct list_head *entry);
entry:待删除的节点
提取数据结构list_entry宏
#define list_entry(ptr, type, member) container_of(ptr, type, member)
ptr:当前链表节点指针
type:包含该链表的数据结构体类型
member:在数据结构体类型中的list_head成员名称
返回:获取的数据结构体指针
实际是通过已知数据结构体中链表节点指针ptr,获取包含该链表节点的数据结构体指针
遍历链表list_for_each宏
#define list_for_each(pos, head) for(pos = (head)->next; prefetch(pos->next), pos != (head); pos = pos->next)
#define list_for_each_safe(pos, n, head) for(pos = (head)->next, n= pos->next; pos !=(head); pos = n, n = pos->next)
pos:list_head指针类型的循环变量
n:list_head指针类型的循环变量
head:待遍历链表的链表头
2、实例代码:
- linux驱动开发--内核链表
- linux驱动开发--内核链表
- 内核驱动开发第四天linux内核链表
- linux 内核驱动开发
- 嵌入式学习-驱动开发前奏-lesson3-linux内核链表
- linux驱动开发-内核符号表
- linux 内核驱动开发入门
- Linux 内核/驱动开发总结
- linux驱动开发--内核定时器
- Linux内核驱动开发注意事项
- Linux设备驱动&&内核开发
- Linux内核驱动学习(六)----内核链表
- Linux内核驱动学习(六)----内核链表
- Linux 内核开发 - 内核链表
- linux内核驱动开发笔试题
- linux内核驱动开发笔试题
- linux内核驱动开发笔试题
- 浅谈 Linux 内核开发之网络设备驱动
- Centos7安装jdk1.7
- JAVA获取时间的四种方法
- JavaScript: 最简单的事件代理(JS Event Proxy)原理代码
- Get请求中文乱码问题有效解决方法
- 客户端如何访问greenplum
- linux驱动开发--内核链表
- Html5之数据持久化学习
- mysqld_safe Directory '/var/lib/mysql' for UNIX socket file don't exists.
- 简单的eclipse应用jna入门和实例
- 画线
- mysql修改用户密码
- RecyclerView Item 布局宽高无效问题探究
- HDU 1176 免费馅饼(DP)
- 13 在ZStack里设置pan ID和信号输出功率