_IOR_BAD和_IOW_BAD的目的是什么?

时间:2014-02-25 17:18:26

标签: linux-device-driver kernel-module ioctl

具有定义ioctl函数/usr/include/asm-generic/ioctl.h的定义的内核头文件具有通常应用的宏_IO_IOR_IOW和{{1 }}。除此之外,还有一些带有_IOWR后缀的宏我很好奇。

_BAD

Linux交叉引用服务显示 no 使用它们。 Googling出现了大约十几个Linux内核交叉引用站点,但绝对没有用。

这些宏的意图是什么?它们看起来像非 /* 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)) 宏的工作方式相同。也许有人知道他们的历史?

1 个答案:

答案 0 :(得分:4)

这是非常古老的代码:http://lkml.iu.edu//hypermail/linux/kernel/0310.1/0019.html

  

来自:Maciej Zenczykowski
  日期:2003年10月8日星期三 - 美国东部时间05:03:01

     
    

也许我弄错了,但有人可以帮助我     明白为什么在这里介绍_IOR_BAD?先谢谢! :)

  
     

为了不破坏用户空间,我们仍然必须支持旧值   同时我们希望新程序开始使用新的正确值    - 因此引入了向后兼容性值。

一般而言,您可能正在寻找的搜索字词是_IOR_BAD lkml