什麼是 ioctl (Input/output control) ?

wiki : ioctl

ioctls are typically employed to allow userspace code to communicate with hardware devices or kernel components.

ioctl是應用程式用來和驅動程式溝通的function,讓應用程式可以對某個裝置下命令
在unix/linux環境中, 裝置的存取和檔案是一樣的,一般會先用open()來取得對裝置的一個控制權,其中,open會傳回一個handle值。

ioctl(handle, command, ...)

前面handle跟command是必須的,後面的參數則視情況而定。

其中handle就是open函式傳回來的值而command就是一個command code。command code每個值所代表的命令會因裝置而不同,完全由驅動程式來解釋command code的意義。若是有的command code還需要傳進其他參數時,就會使用第3、第4...個參數了。

因此使用ioctl之前, 要先看是要對那個裝置下命令,再去查那個裝置的驅動程式支援那些command code讓應用程式使用。

而當應用程式呼叫 ioctl時, 相對應的驅動程式會有一個callback function被呼叫到。這個callback function專門用來處理 ioctl command code。你呼叫ioctl時可以傳那些command code以及要傳那些參數都和此callback function有關。



相關閱讀:

Linux 驅動程式的 I/O, #1: 基本概念
Linux 驅動程式的 I/O, #2: I/O 存取相關函數
Linux 驅動程式的 I/O, #3: kernel-space 與 user-space 的「I/O」
Linux 驅動程式的 I/O, #4: fops->ioctl 實作

留言

搜尋

本月熱門文章

新鮮人找工作:職場名詞解釋 AE FAE Pre-sales Post-sales

日本旅行 去東京可以在哪邊買羽球相關用品?WEMBLEY/WINDSOR/梭家/Victoria/Alpen TOKYO/

什麼是Sanity test ? 軟體測試常見名詞整理

水電行介紹---台北市北投區致遠二路113巷7號的揚明水電行‎—在地老店,水電服務的好鄰居

水電行介紹---台北市松山區延吉街的廣泰水電行—在地經營水電行,來電預約跨區跑也OK啦~

廚具水電行—呼叫臺北市內湖區民權東路6段56巷1弄2號的永輝水電衛浴廚具行 –有廚浴, 衛浴展示空間喔!

水電行介紹---台北市大同區重慶北路二段101號的永發水電行---公車直達的水電行!

水電行介紹---台北市萬華區東園街47號的正泰水電裝潢行---水電廚具衛浴找我就對啦!

水電行介紹---臺北市大同區歸綏路197號1樓的新雅水電行---32歲的在地水電行。

水電材料行介紹---臺北市大同區寧夏路75號的順利電料有限公司 ---在地經營二十四年的水電材料行,請大家繼續支持!

Agoda

熱門文章

[社會觀察] 一生順遂與命途乖舛

中華民國2024 總統、副總統選舉公告發布 連署參選門檻28萬9667人 可以推薦候選人的政黨包括民進黨、國民黨、民眾黨和時力

關於中國:202X年

[FAANG面試] 如何準備Google Technical Program Manager (TPM) 面試

[HMD Global] Nokia 2020 新手機發布 首款 5G 手機 Nokia 8.3 預計夏季開賣 !

新鮮人找工作:職場名詞解釋 AE FAE Pre-sales Post-sales

日本旅行 去東京可以在哪邊買羽球相關用品?WEMBLEY/WINDSOR/梭家/Victoria/Alpen TOKYO/

[音樂] 霖霖 新單曲:給你了

[表特][Passion Sisters] 中信兄弟PS女孩 浮誇甜心 凱蒂 炸裂全場~ 小許瑋甯