您現在的位置: 18luck新利全站下载 >> 行業分類>> IT行業>> 資料信息

高級字符驅動操作說明(doc 50頁)

所屬分類:
IT行業
文件大小:
418 KB
下載地址:
相關資料:
操作說明
高級字符驅動操作說明(doc 50頁)內容簡介

高級字符驅動操作說明目錄:
1.ioctl 接口
2.阻塞 I/O
3.poll 和 select
4.異步通知
5.移位一個設備
6.在一個設備文件上的存取控製
7.快速參考


高級字符驅動操作說明內容提要:
ioctl 接口:
大部分驅動需要 -- 除了讀寫設備的能力 -- 通過設備驅動進行各種硬件控製的能力. 大部分設備可進行超出簡單的數據傳輸之外的操作; 用戶空間必須常常能夠請求, 例如, 設備鎖上它的門, 彈出它的介質, 報告錯誤信息, 改變波特率, 或者自我銷毀. 這些操作常常通過 ioctl 方法來支持, 它通過相同名子的係統調用來實現.
在用戶空間, ioctl 係統調用有下麵的原型:
int ioctl(int fd, unsigned long cmd, ...);
這個原型由於這些點而凸現於 Unix 係統調用列表, 這些點常常表示函數有數目不定的參數. 在實際係統中, 但是, 一個係統調用不能真正有變數目的參數. 係統調用必須有一個很好定義的原型, 因為用戶程序可存取它們隻能通過硬件的"門". 因此, 原型中的點不表示一個變數目的參數, 而是一個單個可選的參數, 傳統上標識為 char *argp. 這些點在那裏隻是為了阻止在編譯時的類型檢查. 第 3 個參數的實際特點依賴所發出的特定的控製命令( 第 2 個參數 ). 一些命令不用參數, 一些用一個整數值, 以及一些使用指向其他數據的指針. 使用一個指針是傳遞任意數據到 ioctl 調用的方法; 設備接著可與用戶空間交換任何數量的數據.
ioctl 調用的非結構化特性使它在內核開發者中失寵. 每個 ioctl 命令, 基本上, 是一個單獨的, 常常無文檔的係統調用, 並且沒有方法以任何類型的全麵的方式核查這些調用. 也難於使非結構化的 ioctl 參數在所有係統上一致工作; 例如, 考慮運行在 32-位模式的一個用戶進程的 64-位 係統. 結果, 有很大的壓力來實現混雜的控製操作, 隻通過任何其他的方法. 可能的選擇包括嵌入命令到數據流(本章稍後我們將討論這個方法)或者使用虛擬文件係統, 要麼是 sysfs 要麼是設備特定的文件係統. (我們將在 14 章看看 sysfs). 但是, 事實是 ioctl 常常是最容易的和最直接的選擇,對於真正的設備操作.


..............................

Baidu
map