2014-02-25 61 views
2

具有用於定義ioctl函數的定義的內核頭文件/usr/include/asm-generic/ioctl.h具有常用和常用的宏_IO,_IOR,_IOW_IOWR。在這些旁邊,還有幾個宏,其中有我感興趣的_BAD後綴。_IOR_BAD和_IOW_BAD的用途是什麼?

/* used to create numbers */ 
#define _IO(type,nr)   _IOC(_IOC_NONE,(type),(nr),0) 
#define _IOR(type,nr,size)  _IOC(_IOC_READ,(type),(nr),(_IOC_TYPECHECK(size))) 
#define _IOW(type,nr,size)  _IOC(_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size))) 
#define _IOWR(type,nr,size)  _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size))) 
#define _IOR_BAD(type,nr,size) _IOC(_IOC_READ,(type),(nr),sizeof(size)) 
#define _IOW_BAD(type,nr,size) _IOC(_IOC_WRITE,(type),(nr),sizeof(size)) 
#define _IOWR_BAD(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),sizeof(size)) 

Linux的交叉引用服務顯示沒有使用它們。 Googling出現了十幾個Linux內核交叉引用網站,但絕對沒有用處。

這些宏的意圖是什麼?它們看起來像它們的工作方式與非_BAD宏一樣。也許有人知道他們的歷史?

回答

4

這是很老的代碼:http://lkml.iu.edu//hypermail/linux/kernel/0310.1/0019.html

來源:馬切伊Zenczykowski
日期:星期三2003年10月8日 - 5時03分01秒EST

也許我有一些錯誤,但有人可以幫我到 瞭解爲什麼在這裏介紹_IOR_BAD?先謝謝! :)

以免破壞用戶空間,我們仍然必須支持舊的價值觀念,在我們希望有新的計劃,開始使用新的正確的價值觀 的 同一時間 - 因此引進向後兼容性值。

而在一般情況下,你可能尋找的搜索詞是_IOR_BAD lkml

+0

哇哦!:這是十年前!感謝您的發現。 – wallyk

+0

另外,請注意,這現在是公共API的一部分,所以它可能永遠留在這個文件中。 –

相關問題