Pages

2012年5月27日 星期日

[嵌入式系統] Linux kernel內的資料Export到外部


在撰寫嵌入式系統的驅動程式(以linux為系統)時,我們有時候需要將kernel內的變數Export給我們自己撰寫的驅動程式,也就是我們可以在Linux的kernel內定義extern變數或函式,來給外部自己定義的module使用。
要將變數或函式Export給外部使用,必須做以下2個步驟:
1.   用EXPORT_SYMBOL()函式,將自己定義的Variable1匯出給外部使用。例如我們可以在 linux/kernel/net/netsyms.c內,將Variable1 Export出來:
//要先 #include <linux/module.h>
int Variable1 = 0;
EXPORT_SYMBOL(Variable1);
可以研究一下netsyms.c這個檔案,裡面會發現都是整理一系列的EXPORT_SYMBOL的動作。

2.   在kernel內的檔案內定義extern的變數,將剛剛Export出來的變數,直接拿來操作。
例如在for PCM7230的linux kernel內,可以在linux/kernel/net/core/dev.c內定義extern:
extern int Variable1;
接著就可以將Variable1拿來使用了。
在自己撰寫的驅動程式裡面,也可是一樣先在變數前寫上"extern",就可以操作從kernel導出的變數。我們可以在驅動程式的程式碼內,修改從kernel Export出來的變數,也可以用create_proc_entry函式新增一個程序在linux的文件系統 /proc 裡面,並且將create_proc_entry函式回傳的指標,來將這個程序的參數,指定為在驅動程式的程式碼內自己定義的函式。

沒有留言:

張貼留言