1
IOCTL代碼在內核模塊通常被定義爲宏內部.C或.H文件,即:傳遞IOCTL代碼從內核模塊到用戶空間程序
#define DRV_CTL_RESET _IO(DRV_MAGIC, 0x01)
#define DRV_CTL_DSP_TO _IO(DRV_MAGIC, 0x02)
和用戶空間中的使用程序是:
ioctl(drv_fd, DRV_CTL_DSP_TO, (unsigned long)tmo);
一切都很好,但..
問題是:什麼是內核和用戶空間之間的代碼同步的好辦法ioctl?
我現在的解決方案是從內核模塊的源自動生成一個API頭文件並將其包含在用戶空間程序中。但我希望,也許有一個更方便的方法。
這就是我現在要做的。但是要定義* _IO *宏,必須包含其他幾個內核頭文件。當只需要很少的數字時,這看起來有些過分。 – KBart
_IO宏在中定義,它應該在安裝了開發頭文件的任何linux系統上出現。這些頭文件在/ usr/include/{asm-generic,linux}中總是被導出到用戶空間。 –
davmac
我知道,它的工作原理。但是我正在爲嵌入式系統編寫一個庫,並希望儘可能少地依賴內核。所以我的目標是在用戶空間中有原始數字,就像* #define DRV_CTL_RESET 0x150 *(爲了清晰起見,只是一個隨機數字)。 – KBart