簡體   English   中英

需要在Linux內核驅動程序中定義ioctl

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM