多內核版本源文件
內核展現給進程的主要界面是系統調用,它通常跨版本保持相同。新的系統調用被加入,但通常老的保持和原來嚴格的一樣。這對於向後兼容性是必要的--新的內核版本不應打破常規的進程。在大多情況下,設備文件也將保持相同。另一方面,和內核內部的接口可以並且在版本之間有改變。
Linux內核版本分為穩定版 (n.<偶數>.m) 和開發版 (n.<奇數>.m).開發版包含所有的好的新思想,包括那些被認為是錯誤或需要在下一版重新實現的東西。結果,你不能期盼在那些版本中界面保持相同(這也是我為什麼不在這本書中操心去支持它的原因,那需要太多的工作並且很快就過時了)。另一方面,在穩定版中我們可以期盼界面保持相同,除了錯誤修訂版(數字m)。
這個版本的內核模塊編程指南包括對 2.0.x 和2.2.x 內核版本的支持。既然這兩個版本間有差異,這就需要根據版本進行條件編譯。可以使用宏 LINUX_VERSION_CODE來做這件事。在 a.b.c 版的內核中,這個宏的值是 216a+28b+c。為了 得到某個內核版本的值,我們可以使用 KERNEL_VERSION 宏. 因為在 2.0.35版中沒有定義它, 我們可以在必要的時候自己定義它。