
内核数据结构
Linux 内核数据结构
爱洋葱
One battle, one person
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
内核数据结构 —— 内核链表
内核链表定义普通的链表是将next指针定义成为与该结构体一样的类型,这样做通用性不好。与普通的链表的定义和使用方式不一样,内核的链表定义成为了一种通用的结构:struct list_head { struct list_head *next, *prev;};在内核链表中,仅仅定义了 next 和 prev 指针,用于寻找链表中的下一个节点和前一个节点(双向链表)。通常内核使用...原创 2019-01-14 17:56:01 · 2907 阅读 · 0 评论 -
Linux 内核等待队列
目录1、等待队列结构和API1.1、等待队列头1.1.1、定义等待队列头1.1.2、初始化等待队列头1.1.3、定义等待队元素1.1.4、添加/移除等待队列1.1.5、等待事件并睡眠1.1.6、唤醒队列2、等待队列(头)用法2.1、 睡眠2.1.1、方式一2.1.2、方式二2.2、 唤醒3、等待队列相关源码分析3.1、睡眠3.2、唤...原创 2019-08-22 17:10:40 · 1801 阅读 · 1 评论 -
Linux container_of 分析
container_of 简述container_of 是 Linux 中最常用的宏之一,不仅仅在上一章的链表数据结构中,在很多的地方都有使用到,他的作用是:根据一个结构体变量中的一个域成员变量的指针来获取指向整个结构体变量的指针,以便对结构体的其他成员进行操作是不是超有用?来,先贴代码为敬:/** * container_of - cast a member of a st...原创 2019-01-14 19:57:53 · 359 阅读 · 0 评论 -
内核 kthread_worker 和 kthread_work 机制
目录1、数据结构2、使用方式2.1、准备kthread_worker2.2、准备kthread_work2.3、启动 work2.4、flush 指定 worker 上所有 work2.5、停止当前的线程3、实现源码3.1、kthread_init_worker3.2、执行线程 kthread_worker_fn3.3、kthread_init_wo...原创 2019-08-23 14:51:07 · 6389 阅读 · 0 评论 -
内核数据结构 —— 内核队列 (kfifo)
内核队列介绍FIFO 先入先出队列是最常用的数据结构之一,在生产者——消费者模型中扮演了很重要的角色。Linux 内核实现了一种称之为 kfifo 的内核队列,用于满足对数据有先入先出的场景。对于通用的 fifo 而言,需要提供最基本的几个接口:队列的分配 队列的初始化 队列的释放 队列的数据入列 队列的数据出列 队列判满 队列判空有了上述几组接口,我们才能够算是真正...原创 2019-01-15 22:17:02 · 7626 阅读 · 1 评论