| Robert Love的《Linux Kernel Development》一书,比较适合内核入门。而且对某些方面的解说,比如各种下半部,非常到位。承蒙一位陌生朋友的慨然相助,我有幸得到了本书的英文第二版,把中文不好理解的地方对照英文订正一下。只订正有碍理解的,当然可能有些是我理解错误,朋友们指正。多谢了。 《Linux内核设计与实现》勘误
Robert Love的《Linux Kernel Development》一书,比较适合内核入门。而且对某些方面的解说,比如各种下半部,非常到位。承蒙一位陌生朋友的慨然相助,我有幸得到了本书的英文第二版,把中文不好理解的地方对照英文订正一下。只订正有碍理解的,当然可能有些是我理解错误,朋友们指正。多谢了。
P8
L+7:练习中一般在头文件中定义内联函数
订正:实践中一般在头文件中定义内联函数
P9
L-13:Linux内核支持多处理器并发处理
订正:原文是“The Linux Kernel supports multiprocessing”,译为“Linux内核支持多处理器系统”似乎好些,而且这里不能说成是并发(concurrent),应该是并行(parallel)
P15
图2-2中的thread_struct应改为thread_info,这个原书就印刷错了。
P31
L+9:每个优先级数组还包含一个叫做struct list_head的队列。
订正:翻译错误。原文是:“Each priority_array also contains an array named queue of struct list_head queues.”应译为:“每个priority_array包含一个叫作queue的数组,该数组每个元素都是一个struct list_head类型的队列”。其实这个从左边那页给出的priority_array的结构定义也能看出来。
P51
L+1:将系统调用号和参数压入寄存器并出发软中断来陷入内核
订正:应该是“触发软件中断”,原文是software interrupt而不是softirq。这跟作为一种下半部机制的softirq根本不是一回事。
P61
L-4:首先,因为处理器禁止中断,这里要把它们打开,就必须在处理程序注册期间指定SA_INTERRUPT标志。
订正:“必须”应该改成“不能”。如果注册时指定了SA_INTERRUPT标志,这里能打开吗?显然不能。译者误解了原著的意思。
P63
L-17:cli和sti分别是对clear和set允许中断(allow interrupts)标志的汇编指令
订正:译的真别扭。改为:“cli和sti分别是对允许中断标志的clear和set操作的汇编指令的调用。”(好象一样别扭^_^ )
P73
第6.3节
订正:这节中所有“挂起”字样,原文统统是pending,意思是悬而未决的、未处理的、待处理的,用过UNIX信号的人都知道,pending跟suspended根本不是一个意思。
P116
第9.2节
订正:排版太不负责任了,作为节拍的倒数的HZ变量,全都给印刷成了Hz,好象频率单位赫兹一样。大家自己改改吧。
P155
L+8:struct super_operations s_op;
订正:struct super_operations *s_op; 原书也印刷错了。(可别小看这个星星,VFS的面向对象全靠它)
P170
L+4:有三个数据结构将VFS层和文件的进程紧密联系在一起
订正:“文件的”这三个字不知道从哪里来的,原书没有,也不该有。
P175
L+10~L+11:可以在文件中找到包含所有合法标志的bh_state_bite列表。
订正:误译。原文是:The legal flags are stored in the bh_state_bits enumeration,which is defined in 。其实看见enumeration的前4个字母就能猜到是枚举,改成:“合法的标志存储在 bh_state_bits枚举中,该枚举在中定义。”
P176
L-3:struct bio_vec *bi_io_vecs
订正:struct bio_vec *bi_io_vec。还有下页图12-2和解说的文字,都印刷错了。
P191
L-11:记住根节点总为红色。
订正:这话怎么跟我看的数据结构的书矛盾啊。Mark Allen Weiss的《数据结构与算法分析──C语言描述》2nd第十二章《高级数据结构及其实现》就说:“根总是黑色的。”(P.S. Weiss可是Robert Love的老师哦)其实Love的话自相矛盾,他这么说的:“(红色和黑色)分派的规则为:1)红节点的子节点为黑色,并且2)树中任何一条从节点到叶子的路径必须包含同样数目的黑色节点。记住根节点总为红色。” 我们可以做个反证。假设根节点为红色,考虑一棵只有2个节点的二叉树,既然根节点是红色,那么根据Love说的第一条规则,叶节点必定为黑色,这将导致从根节点到左右NULL指针的路径包含的黑色节点个数不同(左边是0,右边是1),与第二条规则矛盾。Love本科是在佛罗里达大学读的数学专业,不可能犯这种错误,要不就是印刷问题,要不就是我理解错了。
P237
L+1:如果你希望得到一个单独的文件
订正:原文是“If you need to diff only a single file”,明显是说,diff程序的输入是两个单一文件(而不是两个目录),并非指diff生成一个单一补丁文件。(再说,diff程序能生成1个以上的文件吗?很怀疑的说 icon_biggrin.gif )
OK,大体这么多吧,其他的基本不影响阅读。Happy Reading!!
(趁着五一熬夜,5日凌晨7点半:-) ) |