裝置檔案應真實反映物理裝置能力。多數裝置具備輸入/輸出,核心驅動程式需接收進程輸出並送至裝置,由 device_write 實現,方式同寫入一般檔案。
例:序列埠連接數據機。寫入資料給數據機(指令/傳輸資料)、讀取回應(指令回應/接收資料)皆可用 read/write。但需設定傳輸速率等序列埠參數時,read/write 無法表達。
Unix 解決方案:ioctl (I/O Control)。每個裝置擁有專屬 ioctl 命令:
注意:此處「讀/寫」含義與檔案操作相反。
由主裝置號、ioctl 類型、命令、參數類型編碼。標準巨集:_IO、_IOR、_IOW、_IOWR(依資料傳輸方向選擇)。頭檔需被使用程式與核心模組同時包含(範例:chardev.h、ioctl.c)。
建議申請官方分配的 ioctl 編號,避免衝突。參考核心原始碼 Documentation/ioctl-number.txt。