Linux的設備驅(qū)動程序應是一個內(nèi)核模塊
發(fā)布時間:2009/2/18 0:00:00 訪問次數(shù):1482
為了增跟內(nèi)核的靈活性和為了方便,設各驅(qū)動程序應被設計為一個可動態(tài)安裝的內(nèi)核模塊。
于是,一個典型的linux設各驅(qū)動程序應包含如下幾部分代碼:
·驅(qū)動程序模塊的注冊與注銷函數(shù);
·設各的打開、關閉、讀、寫及需要的其他操作函數(shù);
·設備的中斷服務程序。
下面用偽代碼給出一個從鍵盤上輸入一個字符的例子,以使讀者對設備驅(qū)動程序的構(gòu)成有一個基本的概念。
。1)定義讀操作函數(shù)
ssize mydev_read(……)
{
獲取本設備的信號量以確倮沒有其他進程訪悶本設備;
申請中斷標志,允許中斷;
對設備發(fā)出讀命令;
將進eh于等待隊列,等待中斷到來:
}
。2)定義中斷服務程序
void mydev_ihterpt(……)
{
處理器讀入字符;
設置中斷標志:
喚醒等侍的進程:
}
。3)定義模塊初始化函數(shù)
int init_module(void)
向系統(tǒng)注冊設各;
其他初始化代碼;
(4)定義模塊析構(gòu)函數(shù)
void clemup_modtlle(void)
{
取消注冊的設備;
其他析構(gòu)代碼;
}
歡迎轉(zhuǎn)載,信息來自維庫電子市場網(wǎng)(www.dzsc.com)
為了增跟內(nèi)核的靈活性和為了方便,設各驅(qū)動程序應被設計為一個可動態(tài)安裝的內(nèi)核模塊。
于是,一個典型的linux設各驅(qū)動程序應包含如下幾部分代碼:
·驅(qū)動程序模塊的注冊與注銷函數(shù);
·設各的打開、關閉、讀、寫及需要的其他操作函數(shù);
·設備的中斷服務程序。
下面用偽代碼給出一個從鍵盤上輸入一個字符的例子,以使讀者對設備驅(qū)動程序的構(gòu)成有一個基本的概念。
。1)定義讀操作函數(shù)
ssize mydev_read(……)
{
獲取本設備的信號量以確倮沒有其他進程訪悶本設備;
申請中斷標志,允許中斷;
對設備發(fā)出讀命令;
將進eh于等待隊列,等待中斷到來:
}
(2)定義中斷服務程序
void mydev_ihterpt(……)
{
處理器讀入字符;
設置中斷標志:
喚醒等侍的進程:
}
。3)定義模塊初始化函數(shù)
int init_module(void)
向系統(tǒng)注冊設各;
其他初始化代碼;
。4)定義模塊析構(gòu)函數(shù)
void clemup_modtlle(void)
{
取消注冊的設備;
其他析構(gòu)代碼;
}
歡迎轉(zhuǎn)載,信息來自維庫電子市場網(wǎng)(www.dzsc.com)
熱門點擊
- Linux設備驅(qū)動程序的函數(shù)跳轉(zhuǎn)表
- PIE中斷向量的映射方式
- Linux系統(tǒng)調(diào)用例程system_call
- PIE模塊級中斷
- 什么是Linux內(nèi)核模塊
- Linux系統(tǒng)調(diào)用接口、系統(tǒng)調(diào)用例程和內(nèi)核服
- ARM復位原理
- Linux系統(tǒng)調(diào)用接口、系統(tǒng)調(diào)用例程和內(nèi)核服
- Linux字符設備驅(qū)動程序的注冊
- Linux外部設備的基本概念
推薦技術資料
- DFRobot—玩的就是
- 如果說新車間的特點是“靈動”,F(xiàn)QPF12N60C那么... [詳細]