|
发表于 2004-12-22 10:25:07
|
显示全部楼层
内核模块与应用程序的另一个区别是,你得小心“名字空间污染”问题。程序员在写小程序时,往往不注意程序的名字空间,但当这些小程序成为大程序的一部分时就会造成许多问题了。名字空间污染是指当存在很多函数和全局变量时,它们的名字已不再富有足够的意义来很容易的区分彼此的问题。不得不处理这种应用程序的程序员必须花很大的精力来单单记住这些“保留”名,并为新符号寻找新的唯一的名字。如果在写内核代码时出现这样的错误,这对我们来说是无法忍受的,因为即便最小的模块也要连编到整个内核中。防止名字空间污染的最佳方法是把所有你自己的符号都声明为static的,而且给所有的全局量加一个well-defined前缀。此外,你还可以通过声明一个符号表来避免使用static声明,这些内容将在本章的“注册符号表”小节中介绍。即便是模块内的私有符号也最好使用选定的前缀,这样有时会减轻调试的工作。通常,内核中使用的前缀都是小写的,今后我们将贯彻这一约定。
摘自 LINUX DEVICES DRIVERS |
|