近日 Martijn Coenen 提供了一份 patch, 主要在於提供 Linux Kernel 各 subsystem 的 symbol namespace 的功能.目前不確定是否與何時會合入 mainstream, 但是該 patch 為 Greg Kroah-Hartman (與很多developer) 所盼望的,或許不久的未來會正式支援.
在 Linux 4.17 中, exported symbol 總數已超過了 30000 個, kernel 開發者漸有了共識, 也就是 export 的範圍太大, 並且難以理解.
基本上這些 symbol 分為三類:
- 對 drivers 有實際意義的 symbols
- 由於功能性緣故被切分到多個模組的 symbols, 基本上不該被用在該 subsystem 以外.
- 只對(目錄結構)樹狀內有意義的 symbols
這份 patch 的作用不在於減少 exported symbol 的數目, 而在於提供一個機制能夠提供一般性 export symbol 的秩序. 這份 patch 使得 subsystem 能夠將各自 exported symbols 放入個別的 namespace, 而模組開發者僅在需要的時候才 import 這些 namespaces.
這也使得 subsystem 維護者能夠輕易限制這些使用 namespace 的 symbol 對於 kernel 其他部份的使用. 也能夠分割出作為文件用途的 exported symbols; 像是, 一個僅作為 debugging 作用的 sysmbol set 可以放入名為“SUBSYSTEM_DEBUG” 的 namespace.
該成果受到 Greg Kroah-Hartman (LDD一書作者, linux stable kernel 維護者)的讚賞. 並稱讚使用 build system 為各別 subsystem 基於 symbol namespace 改變而自動產生 patch 令人驚豔.
沒有留言:
張貼留言