《深入Linux设备驱动程序内核机制》重印勘误内容
(2012-04-27 10:31)
目前重印工作已经结束,第2次印刷的改动主要是: 1. 作者介绍部分:第二段仅保留“目前任职于AMD上海研发中心,主要从事Linux显卡驱动等领域的研发工作”。 2. 推荐序部分: "Deep Understanding Linux Kernel"应为"Understanding the Linux Kernel" 3. 前言部分: “林雨堂”应为“林语堂” 最后的致谢部分另加一小段如下: “在本书首印后,感谢AMD的Annie Feng、ChinaUnix网友wait_rabbit及A10 Networks公司 高峰(CU ID: GFree_Wind)对本书重印的勘误工作提供的帮助!” 4. P4: “(如果section不占用内存空间,该值为0)”改为“(如果section不占用内存空间,加载后实际地址为0)” 5.
P33: "static int
__param_perm_check_dolphin __attribute__((unused)) =
\"应为: 6. P82:“图2-10 开一个字符设备节点的功能流程”应为“图2-10 打开一个字符设备节点的功能流程” 7. P146:该页中出现的所有“ DECLARE_MUTEX”都应改为“DEFINE_SEMAPHORE” 8. P153:“如果sequence & 0 为0表明写入过程已经结束”中"sequence & 0"应该是"sequence & 1” 9. P192: “那么IRQ_EXIT_OFFSET=(HARDIRQ_OFFSET-1),意味着在HARDIRQ部分结束之后,内核已经启动可抢占性”, 最后一句应该为“内核已经可以启动可抢占性了” 10. P267, "static unsigned long eflag=1"应该改为“static volatile unsigned long eflag=1” 11. P267: static void sigio_handler(int sigio) { printf(“Get the SIGIO signal, we exit the application!\n”); eflag = 0; } 在上述printf那行加个脚标,改成: static void sigio_handler(int sigio) { printf(“Get the SIGIO signal, we exit the application!\n”);[1] eflag = 0; }
12. P274:“通常Jiffies在Linux系统启动引导阶段被初始化为0”改为“通常Jiffies在Linux系统启动引导阶段被初始化为INITIAL_JIFFIES” 13. P275:“使用内核默认的值1000就足够了。事实上CONFIG_HZ并未出现在内核的配置菜单选项中,而是就在内核源码根目录下的.config文件中。”改为“使用内核默认的值就足够了。如果想要修改该值,可以通过Processor type and features --> Timer frequency选项进行,目前的内核配置中提供了100、250、300和1000Hz四个值。” 14. P283:“schedule_timeout(jiffies + HZ)”应为“schedule_timeout(HZ)” 15. P515,“各层通过改变skb->data和skb->tail的值来获得当前层对应的协议数据首地址”改为“各层通过改变skb->data的值来获得当前层对应的协议数据首地址”
[1] 信号处理函数中调用printf可能会导致重入等问题,此处使用该函数仅简单地作为一个范例使用。 |
|