dqs_linux-1

EXPORT_SYMBOL只出如今2.6內核中,在2.4內核默認的非static 函數和變量都會自動導入到kernel 空間的, 都不用EXPORT_SYMBOL() 作標記的。
2.6就必須用EXPORT_SYMBOL() 來導出來(由於2.6默認不處處全部的符號)。 

一、EXPORT_SYMBOL的做用是什麼?
EXPORT_SYMBOL標籤內定義的函數或者符號對所有內核代碼公開,不用修改內核代碼就能夠在您的內核模塊中直接調用,即便用EXPORT_SYMBOL能夠將一個函數以符號的方式導出給其餘模塊使用
這裏要和System.map作一下對比:
System.map 中的是鏈接時的函數地址。鏈接完成之後,在2.6內核運行過程當中,是不知道哪一個符號在哪一個地址的。
EXPORT_SYMBOL 的符號, 是把這些符號和對應的地址保存起來,在內核運行的過程當中,能夠找到這些符號對應的地址。而模塊在加載過程當中,其本質就是能動態鏈接到內核,若是在模塊中引用了內核或其它模塊的符號,就要EXPORT_SYMBOL這些符號,這樣才能找到對應的地址鏈接。

二、使用方法
   第1、在模塊函數定義以後使用EXPORT_SYMBOL(函數名)
   第2、在調用該函數的模塊中使用extern對之聲明
   第3、首先加載定義該函數的模塊,再加載調用該函數的模塊

函數

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息