_IOR_BAD和_IOW_BAD的用途是什么?

问题描述:

具有用于定义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宏一样。也许有人知道他们的历史?

这是很老的代码: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的一部分,所以它可能永远留在这个文件中。 –