Linux字符設備驅動程序的注冊
發布時間:2009/2/18 0:00:00 訪問次數:1693
字符設各是linux中最簡單的設備。
在linux中,字符設各是用一個叫做字符設備結構的數據結構char device struct來描述的。為了管理上的方便,系統維護了一個數組chrdevslj,該數組的每一項都代表一個字符沒各。
在文件linux/fs/char_dev.c中定義的char_device_struct的數據結構及數組chrdevs[]代碼如下:
結構中的一個域name是指向設備驅動程序名的指針;另一個域fops是指向-個封裝了文件操作函數集結構的指針。這些文件操作函數就是對這個字符設備進行具體的如打開、讀、寫、關閉等文件操作驅動程序。
字符設備注冊表結構如圖所示。當安裝一個字符設各時,須調用注冊函數regester chardev()向注冊表插入一個新的表項。函數regester_chardev()的原型如下:
圖 字符設備驅動程序的注冊
當代表-個字符設備的文件被進程打開日1,系統根據設備主、次設各號,查詢上述的chrdevs[]數組,并獲得fops指針和為進程設置-個描述這個字符特瞇文件跑數握結構file,進而通過fops指針調用指定的驅動程序。
取消注冊的函數為unregister_chrdev()。其原型如下:
int unregister_chrdev int major,const char*name):
設備驅動程序的注冊和取消注冊應分別在模塊的初始化函數和析構函數中完成。
歡迎轉載,信息來自維庫電子市場網(www.dzsc.com)
字符設各是linux中最簡單的設備。
在linux中,字符設各是用一個叫做字符設備結構的數據結構char device struct來描述的。為了管理上的方便,系統維護了一個數組chrdevslj,該數組的每一項都代表一個字符沒各。
在文件linux/fs/char_dev.c中定義的char_device_struct的數據結構及數組chrdevs[]代碼如下:
結構中的一個域name是指向設備驅動程序名的指針;另一個域fops是指向-個封裝了文件操作函數集結構的指針。這些文件操作函數就是對這個字符設備進行具體的如打開、讀、寫、關閉等文件操作驅動程序。
字符設備注冊表結構如圖所示。當安裝一個字符設各時,須調用注冊函數regester chardev()向注冊表插入一個新的表項。函數regester_chardev()的原型如下:
圖 字符設備驅動程序的注冊
當代表-個字符設備的文件被進程打開日1,系統根據設備主、次設各號,查詢上述的chrdevs[]數組,并獲得fops指針和為進程設置-個描述這個字符特瞇文件跑數握結構file,進而通過fops指針調用指定的驅動程序。
取消注冊的函數為unregister_chrdev()。其原型如下:
int unregister_chrdev int major,const char*name):
設備驅動程序的注冊和取消注冊應分別在模塊的初始化函數和析構函數中完成。
歡迎轉載,信息來自維庫電子市場網(www.dzsc.com)
熱門點擊
- Linux設備驅動程序的函數跳轉表
- PIE中斷向量的映射方式
- Linux系統調用例程system_call
- 什么是Linux內核模塊
- PIE模塊級中斷
- Linux系統調用接口、系統調用例程和內核服
- ARM復位原理
- Linux系統調用接口、系統調用例程和內核服
- Linux字符設備驅動程序的注冊
- Linux外部設備的基本概念
推薦技術資料
- DFRobot—玩的就是
- 如果說新車間的特點是“靈動”,FQPF12N60C那么... [詳細]