我已經開始學習的ioctl需要Linux內核驅動程序定義的ioctl
我得到這個例子
http://tldp.org/LDP/lkmpg/2.6/html/x892.html
我得到的ioctal總的工作,但我沒有得到爲什麼和我們需要爲我們的駕駛員定義ioctal。
對於例如
,而不是調用 ioctl(file_desc, IOCTL_SET_MSG, message);
,爲什麼我們不能直接使用
device_write(file, message, size, 0);
我已經開始學習的ioctl需要Linux內核驅動程序定義的ioctl
我得到這個例子
http://tldp.org/LDP/lkmpg/2.6/html/x892.html
我得到的ioctal總的工作,但我沒有得到爲什麼和我們需要爲我們的駕駛員定義ioctal。
對於例如
,而不是調用 ioctl(file_desc, IOCTL_SET_MSG, message);
,爲什麼我們不能直接使用
device_write(file, message, size, 0);
問題是可以從用戶空間調用ioctl,但device_write只能從內核中調用。
我敢肯定,這只是因爲它的指導性質。它試圖告訴你如何使用ioctl
。實際上,ioctl
將用於配置設備驅動程序或其後的設備,並且您將使用「正常」方法(可能爲write
)寫入數據。
而且,事實上,這是該代碼不會在該鏈接你提供什麼樣的,它只是簡單地傳遞這是一件好事內核確實後它複製數據到內核空間上device_write
的信息。
ioctl
主要用於設置或獲取有關設備的特定參數或標誌,如讀取或寫入設備寄存器等。
想象一下,你有一箇舊的軟盤驅動器。它有專門的寄存器來控制諸如「打開或關閉電機」,「每個扇區的位數」等等。要設置這些寄存器,請使用ioctl
函數。要寫入您使用的實際磁盤,例如device_write
。