linux内核基本数据结构
月光宝盒
选择了高山,也就选择了坎坷;选择了宁静,也就选择了孤独;选择了机遇,也就选择了风险。选择了,那就拼搏。大海惧怕寂静,所以澎湃;江河惧怕冷漠,所以涛滔;我惧怕平庸,所以追求卓越。
展开
-
linux 内核分析之list_head
文详细分析了 2.6.x 内核中链表结构的实现,并通过实例对每个链表操作接口进行了详尽的讲解。一、 链表数据结构简介链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除数据。链表的开销主要是访问的顺序性转载 2012-11-25 19:45:10 · 702 阅读 · 0 评论 -
linux 内核分析之等待队列
等待队列头定义: include/linux/wait.hstruct __wait_queue_head { spinlock_t lock; struct list_head task_list; }; typedef struct __wait_queue_head wait_queue_head_t;二、作用:在内核里面,等待队列是有很多用处的,尤其是在中断转载 2012-12-17 00:48:38 · 803 阅读 · 0 评论 -
linux内核分析之rbtree的使用
一、理论基础 红黑树是每个节点都带有颜色属性的二叉查找树,颜色为红色或黑色。在二叉查找树强制一般要求以外,对于任何有效的红黑树我们增加了如下的额外要求:性质1. 节点是红色或黑色。性质2. 根是黑色。性质3. 所有叶子都是黑色(叶子是NIL节点)。性质4. 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)性质5. 从任一节点原创 2013-01-06 00:00:25 · 10947 阅读 · 1 评论 -
work_queue变化
Linux自从2.6.20之后,工作队列发生了一些变化,目前从网络上搜索的资料一般都是介绍老版本的工作队列,很少见到对新版本的介绍。本文对新老版本都做了简要概述,并分别提供了简单的实作案例。工作队列(work queue)是Linux kernel中将工作推后执行的一种机制。这种机制和BH或Tasklets不同之处在于工作队列是把推后的工作交由一个内核线程去执行,因此工作队列的优势就在于它转载 2013-06-17 01:29:10 · 2232 阅读 · 0 评论 -
Linux内核哈希表分析与应用
应用例子kernel\kernel\workqueue.cstruct global_cwq {struct hlist_headbusy_hash[BUSY_WORKER_HASH_SIZE];...}struct worker {/* on idle list while idle, on busy hash table wh转载 2013-06-24 02:13:22 · 2098 阅读 · 0 评论 -
unsigned long 的用法
unsigned long 的用法在很多函数调用里面都有 unsigned long 参数,事实上他不只是传递一个数(当然大多数情况下就传递一个数),更重要的是通过强转他还能代表一个地址,即当一个指针使用,下面就举例说明。(指针与unsigned long什么关系?没有关系,C中值的类型并非值本身的属性,而是取决于它的使用方式。)一,内核定时器的使用。转载 2013-06-21 21:12:20 · 9616 阅读 · 0 评论