一、export_symbol核心模組函式匯出機制
1. 案例:筆者要實現乙個功能,驅動模組(adc.ko)與驅動模組(gpio.ko)之間通訊。
2. 修改adc.ko驅動,在函式內部增加讀取adc狀態的介面函式
static unsigned char g_hardware_version = 0x7e;
unsigned char get_hardware_version_by_adc(void)
export_symbol(get_hardware_version_by_adc);
3. 修改gpio.ko驅動,增加獲取adc狀態的介面函式
extern unsigned char get_hardware_version_by_adc(void);
static void nuc972_gpio_request(void)
4. 依次insmod載入adc.ko、gpio.ko驅動,執行除錯資訊如下
nuc972_gpio_request(): get_hardware_version_by_adc=0x7e
5. 檢視核心模組匯出的函式列表
[root@szclou ~]#cat /proc/kallsyms | grep "get_hardware_version_by_adc"
bf01c028 t get_hardware_version_by_adc [nuc972_adc]
二、notify通知鏈機制
詳見:
Linux驅動 模組通訊
編寫模組通訊例項 模組add sub提供add integer 加法與sub integer 減法函式,模組test呼叫函式完成操作。分別對兩模組建立兩個資料夾,編寫對應的.c與makefile檔案,add sub.h在add sub模組資料夾內,分別make編譯成功。遇到的問題 1.insmod ...
linux核心 驅動和硬體之間的關係和通訊
linux驅動是直接和硬體打交道的軟體程式。層次結構上 它處於作業系統和硬體之間。驅動與linux核心的關係 驅動程式提供的一組裝置驅動介面函式device driver inte ce給作業系統在linux中,這一組裝置驅動介面函式一般包括open,close,read,write,ioctl等。...
Linux驅動模組基礎
1 模組載入函式 linux核心模組載入函式一般以 init標識宣告,典型的模組載入函式的形式如下 static int init initialization function void module init initialization function 模組載入函式必須以 module in...