[英]Need of defining ioctl in linux kernel driver
我已經開始學習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
。 實際上, ioctl
將用於配置設備驅動程序或背后的設備,並且您將使用“常規”方法(可能是write
)寫入數據。
而且,實際上,這就是您提供的鏈接中代碼的作用,它只是將信息傳遞給device_write
,這是內核在將數據復制到內核空間后所做的事情。
關鍵是可以從用戶空間調用ioctl,但只能從內核內部調用device_write。
ioctl
主要用於設置或獲取有關設備的特定參數或標志,例如讀取或寫入設備寄存器。
假設您有一個舊的軟盤驅動器。 它具有特殊的寄存器來控制“打開或關閉電動機”,“每個扇區的位數”等內容。要設置這些寄存器,請使用ioctl
函數。 要寫入實際磁盤,請使用例如device_write
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.