什麼是 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 實作

留言

Google

本月熱門文章

香港朋友,真的對唔住,台灣出了這種中共的幫兇!

堅持5個月!反送中示威者六大特色 6 features of Hong Kong Anti-ELAB Protesters│老外看香港│郝毅博 Ben Hedges│新唐人電視台

[黑金] 台南88槍擊案主犯國民黨學甲區黨部主委王文宗 也擔任統促黨幹部

熱門文章

企鵝妹/柳允進 史上最暈的TT三分鐘完整版一次看個夠

陳昇 Bobby Chen【把悲傷留給自己 I left sadness to myself】Official Music Video

裝潢師傅貼圖來了唷

香港朋友,真的對唔住,台灣出了這種中共的幫兇!

新手自建監控雲最快的方式:推薦QNAP NAS 搭配QVR Pro

2020 中華民國 台灣 失業補助申請方式 失業給付申請

香港朋友看服貿 - 嗨,我是香港人,一個CEPA的受害者。

堅持5個月!反送中示威者六大特色 6 features of Hong Kong Anti-ELAB Protesters│老外看香港│郝毅博 Ben Hedges│新唐人電視台