目前重印工作已经结束,第2次印刷的改动主要是:1.      作者介绍部分:第二段仅保留“目前任职于AMD上海研发中心,主要从事Linux显卡驱动等领域的研发工作”。2.      推荐序部分:"Deep Understanding Linux Kernel"应为"Understanding theLinux Kernel"3.      前言部分:“林雨堂”应为“林语堂”最后的致谢部分另加一小段如下:“在本书首印后,感谢AMD的AnnieFeng、ChinaUnix网友wait_rabbit及A10Networks公司 高峰(CUID: GFree_Wind)对本书重印的勘误工作提供的帮助!”4.      P4: “(如果section不占用内存空间,该值为0)”改为“(如果section不占用内存空间,加载后实际地址为0)”5.      P33:  "static int__param_perm_check_dolphin __attribute__((unused)) =       \"应为:   “static int __param_perm_check_dolphin __attribute__((unused))=        \    BUILD_BUG_ON_ZERO((perm) 0777 || ((perm)& 2))         \    + BUILD_BUG_ON_ZERO(sizeof(""prefix) >MAX_PARAM_PREFIX_LEN);       \"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"应该改为“staticvolatile unsigned long eflag=1”11.  P267:static void sigio_handler(int sigio){printf(“Get the SIGIO signal, we exit theapplication!\n”);eflag = 0;}在上述printf那行加个脚标,改成:static void sigio_handler(int sigio){printf(“Get the SIGIO signal, we exit theapplication!\n”);[1]eflag = 0;} 12.  P274:“通常Jiffies在Linux系统启动引导阶段被初始化为0”改为“通常Jiffies在Linux系统启动引导阶段被初始化为INITIAL_JIFFIES”13.  P275:“使用内核默认的值1000就足够了。事实上CONFIG_HZ并未出现在内核的配置菜单选项中,而是就在内核源码根目录下的.config文件中。”改为“使用内核默认的值就足够了。如果想要修改该值,可以通过Processortype 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可能会导致重入等问题,此处使用该函数仅简单地作为一个范例使用。
10-16 12:24