上一页 1 ··· 148 149 150 151 152 153 154 155 156 ··· 280 下一页
摘要: 一个设备驱动常常以反复分配许多相同大小的对象而结束. 如果内核已经维护了一套相同 大小对象的内存池, 为什么不增加一些特殊的内存池给这些高容量的对象? 实际上, 内核 确实实现了一个设施来创建这类内存池, 它常常被称为一个后备缓存. 设备驱动常常不展 示这类的内存行为, 它们证明使用一个后备缓存是对 阅读全文
posted @ 2019-07-06 11:19 樊伟胜 阅读(226) 评论(0) 推荐(0) 编辑
摘要: GFP_DMA 和 GFP_HIGHMEM 都有一个平台相关的角色, 尽管对所有平台它们的使用都 有效. Linux 内核知道最少 3 个内存区: DMA-能够 内存, 普通内存, 和高端内存. 尽管通常地 分配都发生于普通区, 设置这些刚刚提及的位的任一个请求从不同的区来分配内存. 这个 想法是, 阅读全文
posted @ 2019-07-06 11:17 樊伟胜 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 记住 kmalloc 原型是: #include <linux/slab.h> void *kmalloc(size_t size, int flags); 给 kmalloc 的第一个参数是要分配的块的大小. 第 2 个参数, 分配标志, 非常有趣, 因 为它以几个方式控制 kmalloc 的行为 阅读全文
posted @ 2019-07-06 11:15 樊伟胜 阅读(1177) 评论(0) 推荐(0) 编辑
摘要: #include <linux/wait.h> long wait_event_interruptible_timeout(wait_queue_head_t *q, condition, signed long timeout); 使当前进程在等待队列进入睡眠, 安装一个以 jiffies 表达的 阅读全文
posted @ 2019-07-06 11:14 樊伟胜 阅读(499) 评论(0) 推荐(0) 编辑
摘要: #include <linux/param.h> HZ HZ 符号指定了每秒产生的时钟嘀哒的数目. #include <linux/jiffies.h> volatile unsigned long jiffies; u64 jiffies_64; jiffies_64 变量每个时钟嘀哒时被递增; 阅读全文
posted @ 2019-07-06 11:13 樊伟胜 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 一个设备驱动, 在许多情况下, 不需要它自己的工作队列. 如果你只偶尔提交任务给队列, 简单地使用内核提供的共享的, 缺省的队列可能更有效. 如果你使用这个队列, 但是, 你 必须明白你将和别的在共享它. 从另一个方面说, 这意味着你不应当长时间独占队列(无 长睡眠), 并且可能要更长时间它们轮到处 阅读全文
posted @ 2019-07-06 11:12 樊伟胜 阅读(750) 评论(0) 推荐(0) 编辑
摘要: 工作队列是, 表面上看, 类似于 taskets; 它们允许内核代码来请求在将来某个时间调用 一个函数. 但是, 有几个显著的不同在这 2 个之间, 包括: tasklet 在软件中断上下文中运行的结果是所有的 tasklet 代码必须是原子的. 相反, 工作队列函数在一个特殊内核进程上下文运行; 阅读全文
posted @ 2019-07-06 11:11 樊伟胜 阅读(304) 评论(0) 推荐(0) 编辑
摘要: tasklet 类似内核定时器在某些方面. 它们一直在中断时间运行, 它们一直运行在调度它 们的同一个 CPU 上, 并且它们接收一个 unsigned long 参数. 不象内核定时器, 但是, 你无法请求在一个指定的时间执行函数. 通过调度一个 tasklet, 你简单地请求它在以后 的一个由内 阅读全文
posted @ 2019-07-06 11:10 樊伟胜 阅读(321) 评论(0) 推荐(0) 编辑
摘要: 内核提供给驱动许多函数来声明, 注册, 以及去除内核定时器. 下列的引用展示了基本的 代码块: #include <linux/timer.h> struct timer_list { /* ... */ unsigned long expires; void (*function)(unsigne 阅读全文
posted @ 2019-07-06 11:09 樊伟胜 阅读(783) 评论(0) 推荐(0) 编辑
摘要: 为了使用它们, 尽管你不会需要知道内核定时器如何实现, 这个实现是有趣的, 并且值得 看一下它们的内部. 定时器的实现被设计来符合下列要求和假设: 定时器管理必须尽可能简化. 设计应当随着激活的定时器数目上升而很好地适应. 大部分定时器在几秒或最多几分钟内到时, 而带有长延时的定时器是相当少见. 一 阅读全文
posted @ 2019-07-06 11:09 樊伟胜 阅读(2111) 评论(0) 推荐(0) 编辑
上一页 1 ··· 148 149 150 151 152 153 154 155 156 ··· 280 下一页