device.h
上传用户:xiejiait
上传日期:2007-01-06
资源大小:881k
文件大小:3k
源码类别:

SCSI/ASPI

开发平台:

MultiPlatform

  1. /* @(#)device.h 1.5 00/01/10 Copyright 1995 J. Schilling */
  2. /*
  3.  * Generic header for users of major(), minor() and makedev()
  4.  *
  5.  * NOTE: You need to include <sys/types.h> before <device.h>
  6.  *
  7.  * Copyright (c) 1995 J. Schilling
  8.  */
  9. /*
  10.  * This program is free software; you can redistribute it and/or modify
  11.  * it under the terms of the GNU General Public License as published by
  12.  * the Free Software Foundation; either version 2, or (at your option)
  13.  * any later version.
  14.  *
  15.  * This program is distributed in the hope that it will be useful,
  16.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  17.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18.  * GNU General Public License for more details.
  19.  *
  20.  * You should have received a copy of the GNU General Public License
  21.  * along with this program; see the file COPYING.  If not, write to
  22.  * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  23.  */
  24. #ifndef _DEVICE_H
  25. #define _DEVICE_H
  26. #ifndef _MCONFIG_H
  27. #include <mconfig.h>
  28. #endif
  29. /*
  30.  * On generic SVR4, major is a function (defined in sys/mkdev.h).
  31.  * On Solaris it is defined ...
  32.  * As we cannot just test if major is #define'd, we have to 
  33.  * define _FOUND_MAJOR_ instead.
  34.  *
  35.  * WARNING: Do never include <sys/sysmacros.h> in SVR4, it contains
  36.  * an old definition for major()/minor() defining 8 minorbits.
  37.  * Use <sys/mkdev.h> instead.
  38.  */
  39. #include <sys/types.h>
  40. /*
  41.  * Some systems define major in <sys/types.h>.
  42.  * We are ready...
  43.  */
  44. #ifdef major
  45. # define _FOUND_MAJOR_
  46. #endif
  47. #ifdef MAJOR_IN_MKDEV
  48. # include <sys/mkdev.h>
  49. # define _FOUND_MAJOR_
  50. #endif
  51. #ifndef _FOUND_MAJOR_
  52. # ifdef MAJOR_IN_SYSMACROS
  53. # include <sys/sysmacros.h>
  54. # define _FOUND_MAJOR_
  55. # endif
  56. #endif
  57. /*
  58.  * If we are on HP/UX before HP/UX 8,
  59.  * major/minor are not in <sys/sysmacros.h>.
  60.  */
  61. #ifndef _FOUND_MAJOR_
  62. # if defined(hpux) || defined(__hpux__) || defined(__hpux)
  63. # include <sys/mknod.h>
  64. # define _FOUND_MAJOR_
  65. # endif
  66. #endif
  67. /*
  68.  * For all other systems define major()/minor() here.
  69.  * XXX Check if this definition will be usefull for ms dos too.
  70.  */
  71. #ifndef _FOUND_MAJOR_
  72. # define major(dev) (((dev) >> 8) & 0xFF)
  73. # define minor(dev) ((dev) & 0xFF)
  74. # define makedev(majo, mino) (((majo) << 8) | (mino))
  75. #endif
  76. /*
  77.  * Don't pollute namespace...
  78.  */
  79. #undef _FOUND_MAJOR_
  80. #ifdef __XDEV__
  81. /*
  82.  * The following defines are currently only needed for 'star'.
  83.  * We make it conditional code to avoid to pollute the namespace.
  84.  */
  85. #define XDEV_T unsigned long
  86. extern int minorbits;
  87. extern XDEV_T minormask;
  88. extern XDEV_T _dev_mask[];
  89. #define dev_major(dev) (((XDEV_T)(dev)) >> minorbits)
  90. #define _dev_major(mbits,dev) (((XDEV_T)(dev)) >> (mbits))
  91. #define dev_minor(dev) (((XDEV_T)(dev)) & minormask)
  92. #define _dev_minor(mbits,dev) (((XDEV_T)(dev)) & _dev_mask[(mbits)])
  93. #define dev_make(majo, mino) ((((XDEV_T)(majo)) << minorbits) | 
  94. ((XDEV_T)(mino)))
  95. #define _dev_make(mbits,majo,mino) ((((XDEV_T)(majo)) << (mbits) | 
  96. ((XDEV_T)(mino)))
  97. extern void dev_init __PR((BOOL debug));
  98. #ifndef dev_major
  99. extern XDEV_T dev_major __PR((XDEV_T dev));
  100. extern XDEV_T _dev_major __PR((int mbits, XDEV_T dev));
  101. extern XDEV_T dev_minor __PR((XDEV_T dev));
  102. extern XDEV_T _dev_minor __PR((int mbits, XDEV_T dev));
  103. extern XDEV_T dev_make __PR((XDEV_T majo, XDEV_T mino));
  104. extern XDEV_T _dev_make __PR((int mbits, XDEV_T majo, XDEV_T mino));
  105. #endif
  106. #endif /* __XDEV__ */
  107. #endif /* _DEVICE_H */