在 Linux 中,所有設備在 kernel 中皆有一個 device 檔來代表他,而要透過該設備進行輸出或輸出的動作時,也就相當於對他的 device file 做讀取或寫入的動作。例如要將資料列印出來,就是將資料寫進去印表機的設備檔案。因此處理 I/O 動作就像處理檔樣一樣直覺,這稱為 device_write。而除了 device_write 之外,還有一種跟設備溝通的方式,IOCTL (I/O Control)。這是一種系統呼叫介面,當 user space 的程式去呼叫設備的 ioctl 時,就能呼叫其驅動程式已進行指定的動作或進行資料交換。
雖然像 device_write 這樣檔案處理的方式很方便,但是也只適合要透過設備進行 I/O 動作。今天如果要針對設備本身做的方式就像開關檔案、寫檔案一樣方便,但是如果你是要直接送資料給設備譬如是要進行一些設定,就只能使用 IOCTL 的方式了。每一個設備驅動程式本身,都可以定義自己的 IOCTL 函數以執行設定的動作。