LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1173|回复: 4

什么是内核污染?

[复制链接]
发表于 2004-11-10 09:09:56 | 显示全部楼层 |阅读模式
?????
发表于 2004-11-11 15:29:02 | 显示全部楼层
我只见过写自己的Kernel module时如果不用
MODULE_LICENSE("...")
至少声明一种LICENSE的话就会产生kenrel tainted,:-)
发表于 2004-12-10 19:32:19 | 显示全部楼层
准确来说是命名空间污染。
这是由于C没有显式的命名冲突解决机制而导致的。
发表于 2004-12-19 14:13:36 | 显示全部楼层
内核模块变量的命名吧
发表于 2004-12-22 10:25:07 | 显示全部楼层
内核模块与应用程序的另一个区别是,你得小心“名字空间污染”问题。程序员在写小程序时,往往不注意程序的名字空间,但当这些小程序成为大程序的一部分时就会造成许多问题了。名字空间污染是指当存在很多函数和全局变量时,它们的名字已不再富有足够的意义来很容易的区分彼此的问题。不得不处理这种应用程序的程序员必须花很大的精力来单单记住这些“保留”名,并为新符号寻找新的唯一的名字。如果在写内核代码时出现这样的错误,这对我们来说是无法忍受的,因为即便最小的模块也要连编到整个内核中。防止名字空间污染的最佳方法是把所有你自己的符号都声明为static的,而且给所有的全局量加一个well-defined前缀。此外,你还可以通过声明一个符号表来避免使用static声明,这些内容将在本章的“注册符号表”小节中介绍。即便是模块内的私有符号也最好使用选定的前缀,这样有时会减轻调试的工作。通常,内核中使用的前缀都是小写的,今后我们将贯彻这一约定。



摘自 LINUX DEVICES DRIVERS
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表