在編寫驅動中,我們經常看到這些巨集定義,我們定位進去看看,在
#define __init
__section(.init.text) __cold notrace
#define __initdata
__section(.init.data)
#define __initconst
__section(.init.rodata)
#define __exitdata
__section(.exit.data)
#define __exit_call
__used __section(.exitcall.exit)
再定位__section()巨集
,它表示的是# define __section(s) __attribute__ ((__section__(#s)))
這裡用到了__attribute__ 屬性,
__attribute__主要用於改變所宣告據的特性,它有很多子項,用於改變作用物件的特性。比如對函式,noline將禁止進行內聯擴充套件、noreturn表示沒有返回值、pure表明函式除返回值外,不會通過其它(如全域性變數、指標)對函式外部產生任何影響。這裡我們用到了子項_section__,在驅動模組函式前加了這個表示在核心啟動的時候,將這些函式放入對應的某些區段內進行執行,啟動完畢,釋放這些段的記憶體。
核心巨集定義
參考 例如 include include define string hello world i love u n int main 執行結果 helloworld i love u 分割線因為對於乙個大程式而言,我們可能要定義很多常量 不管是放在原始檔還是標頭檔案 那麼我們有時考慮定義某個常量時...
核心MKDEV MAJOR, MINOR 巨集
版本 linux 2.6.24.4 巨集 mkdev major,minor 說明 獲取裝置在裝置表中的位置。major 主裝置號 minor 次裝置號 核心使用的版本號說明檔案 在核心 documentation 目錄下的 devices.txt 有說明。一般本地保留的 major 234 239...
驅動 學習Linux核心如何用巨集來操作裝置號
1.裝置號,主裝置號,次裝置號 主裝置號 應用程式根據裝置檔案的主裝置號,到這個核心的乙個大陣列中找到在核心中找到唯一驅動程式。次裝置號 應用程式根據主裝置號找到驅動程式,驅動根據次裝置號找到對應的唯一的硬體外設。裝置號 同時包含了主裝置號和次裝置號,它的資料型別為 dev t unsigned i...