ioctl.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:2k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /* $Id: ioctl.h,v 1.6 1999/12/01 23:58:36 davem Exp $ */
  2. #ifndef _SPARC_IOCTL_H
  3. #define _SPARC_IOCTL_H
  4. #define _IOC_NRBITS      8
  5. #define _IOC_TYPEBITS    8
  6. #define _IOC_SIZEBITS    8
  7. #define _IOC_RESVBITS    5
  8. #define _IOC_DIRBITS     3
  9. #define _IOC_NRMASK      ((1 << _IOC_NRBITS)-1)
  10. #define _IOC_TYPEMASK    ((1 << _IOC_TYPEBITS)-1)
  11. #define _IOC_RESVMASK    ((1 << _IOC_RESVBITS)-1)
  12. #define _IOC_SIZEMASK    ((1 << _IOC_SIZEBITS)-1)
  13. #define _IOC_DIRMASK     ((1 << _IOC_DIRBITS)-1)
  14. #define _IOC_NRSHIFT     0
  15. #define _IOC_TYPESHIFT   (_IOC_NRSHIFT + _IOC_NRBITS)
  16. #define _IOC_SIZESHIFT   (_IOC_TYPESHIFT + _IOC_TYPEBITS)
  17. #define _IOC_RESVSHIFT   (_IOC_SIZESHIFT + _IOC_SIZEBITS)
  18. #define _IOC_DIRSHIFT    (_IOC_RESVSHIFT + _IOC_RESVBITS)
  19. #define _IOC_NONE        1U
  20. #define _IOC_READ        2U
  21. #define _IOC_WRITE       4U
  22. #define _IOC(dir,type,nr,size) 
  23.         (((dir)  << _IOC_DIRSHIFT) | 
  24.          ((type) << _IOC_TYPESHIFT) | 
  25.          ((nr)   << _IOC_NRSHIFT) | 
  26.          ((size) << _IOC_SIZESHIFT))
  27. #define _IO(type,nr)        _IOC(_IOC_NONE,(type),(nr),0)
  28. #define _IOR(type,nr,size)  _IOC(_IOC_READ,(type),(nr),sizeof(size))
  29. #define _IOW(type,nr,size)  _IOC(_IOC_WRITE,(type),(nr),sizeof(size))
  30. #define _IOWR(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),sizeof(size))
  31. #define _IOC_DIR(nr)        (((nr) >> _IOC_DIRSHIFT) & _IOC_DIRMASK)
  32. #define _IOC_TYPE(nr)       (((nr) >> _IOC_TYPESHIFT) & _IOC_TYPEMASK)
  33. #define _IOC_NR(nr)         (((nr) >> _IOC_NRSHIFT) & _IOC_NRMASK)
  34. #define _IOC_SIZE(nr)       (((nr) >> _IOC_SIZESHIFT) & _IOC_SIZEMASK)
  35. /* ...and for the PCMCIA... */
  36. #define IOC_IN          (_IOC_WRITE << _IOC_DIRSHIFT)
  37. #define IOC_OUT         (_IOC_READ << _IOC_DIRSHIFT)
  38. #define IOC_INOUT       ((_IOC_WRITE|_IOC_READ) << _IOC_DIRSHIFT)
  39. #define IOCSIZE_MASK    (_IOC_SIZEMASK << _IOC_SIZESHIFT)
  40. #define IOCSIZE_SHIFT   (_IOC_SIZESHIFT)
  41. #endif /* !(_SPARC_IOCTL_H) */