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

SCSI/ASPI

开发平台:

MultiPlatform

  1. /* @(#)scsihack.c 1.25 00/01/22 Copyright 1997 J. Schilling */
  2. #ifndef lint
  3. static char _sccsid[] =
  4. "@(#)scsihack.c 1.25 00/01/22 Copyright 1997 J. Schilling";
  5. #endif
  6. /*
  7.  * Interface for other generic SCSI implementations.
  8.  * To add a new hack, add something like:
  9.  *
  10.  * #ifdef __FreeBSD__
  11.  * #define SCSI_IMPL
  12.  * #include some code
  13.  * #endif
  14.  *
  15.  * Warning: you may change this source or add new SCSI tranport
  16.  * implementations, but if you do that you need to change the
  17.  * _scg_version and _scg_auth* string that are returned by the
  18.  * SCSI transport code.
  19.  * Choose your name instead of "schily" and make clear that the version
  20.  * string is related to a modified source.
  21.  * If your version has been integrated into the main steam release,
  22.  * the return value will be set to "schily".
  23.  *
  24.  * Copyright (c) 1997 J. Schilling
  25.  */
  26. /*
  27.  * This program is free software; you can redistribute it and/or modify
  28.  * it under the terms of the GNU General Public License as published by
  29.  * the Free Software Foundation; either version 2, or (at your option)
  30.  * any later version.
  31.  *
  32.  * This program is distributed in the hope that it will be useful,
  33.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  34.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  35.  * GNU General Public License for more details.
  36.  *
  37.  * You should have received a copy of the GNU General Public License
  38.  * along with this program; see the file COPYING.  If not, write to
  39.  * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  40.  */
  41. LOCAL int scsi_send __PR((SCSI *scgp, int f, struct scg_cmd *sp));
  42. #ifdef linux
  43. #define SCSI_IMPL /* We have a SCSI implementation for Linux */
  44. #ifdef not_needed /* We now have a local vrersion of pg.h  */
  45. #ifndef HAVE_LINUX_PG_H /* If we are compiling on an old version */
  46. # undef USE_PG_ONLY /* there is no 'pg' driver and we cannot */
  47. # undef USE_PG /* include <linux/pg.h> which is needed  */
  48. #endif /* by the pg transport code.  */
  49. #endif
  50. #ifdef USE_PG_ONLY
  51. #include "scsi-linux-pg.c"
  52. #else
  53. #include "scsi-linux-sg.c"
  54. #endif
  55. #endif /* linux */
  56. #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
  57. #define SCSI_IMPL /* We have a SCSI implementation for *BSD */
  58. #include "scsi-bsd.c"
  59. #endif /* *BSD */
  60. #if defined(__bsdi__) /* We have a SCSI implementation for BSD/OS 3.x (and later?) */
  61. # include <sys/param.h>
  62. # if (_BSDI_VERSION >= 199701)
  63. #  define SCSI_IMPL
  64. #  include "scsi-bsd-os.c"
  65. # endif /* BSD/OS >= 3.0 */
  66. #endif /* BSD/OS */
  67. #ifdef __sgi
  68. #define SCSI_IMPL /* We have a SCSI implementation for SGI */
  69. #include "scsi-sgi.c"
  70. #endif /* SGI */
  71. #ifdef __hpux
  72. #define SCSI_IMPL /* We have a SCSI implementation for HP-UX */
  73. #include "scsi-hpux.c"
  74. #endif /* HP-UX */
  75. #if defined(_IBMR2) || defined(_AIX)
  76. #define SCSI_IMPL /* We have a SCSI implementation for AIX */
  77. #include "scsi-aix.c"
  78. #endif /* AIX */
  79. #if defined(__NeXT__)
  80. #define SCSI_IMPL /* We have a SCSI implementation for NextStep */
  81. #include "scsi-next.c"
  82. #endif /* NEXT */
  83. #if defined(__osf__)
  84. #define SCSI_IMPL /* We have a SCSI implementation for OSF/1 */
  85. #include "scsi-osf.c"
  86. #endif /* OSF/1 */
  87. #ifdef VMS
  88. #define SCSI_IMPL /* We have a SCSI implementation for VMS */
  89. #include "scsi-vms.c"
  90. #endif /* VMS */
  91. #ifdef OPENSERVER
  92. #define SCSI_IMPL /* We have a SCSI implementation for SCO OpenServer */
  93. #include "scsi-openserver.c"
  94. #endif  /* SCO */
  95. #ifdef UNIXWARE
  96. #define SCSI_IMPL /* We have a SCSI implementation for SCO UnixWare */
  97. #include "scsi-unixware.c"
  98. #endif  /* UNIXWARE */
  99. #ifdef __OS2
  100. #define SCSI_IMPL /* We have a SCSI implementation for OS/2 */
  101. #include "scsi-os2.c"
  102. #endif  /* OS/2 */
  103. #ifdef __BEOS__
  104. #define SCSI_IMPL /* Yep, BeOS does that funky scsi stuff */
  105. #include "scsi-beos.c"
  106. #endif
  107. #ifdef __CYGWIN32__
  108. #define SCSI_IMPL /* Yep, we support WNT and W9? */
  109. #include "scsi-wnt.c"
  110. #endif
  111. #ifdef __NEW_ARCHITECTURE
  112. #define SCSI_IMPL /* We have a SCSI implementation for XXX */
  113. /*
  114.  * Add new hacks here
  115.  */
  116. #include "scsi-new-arch.c"
  117. #endif
  118. #ifndef SCSI_IMPL
  119. /*
  120.  * This is to make scsitranp.c compile on all architectures.
  121.  * This does not mean that you may use it, but you can see
  122.  * if other problems exist.
  123.  */
  124. /*
  125.  * Warning: you may change this source, but if you do that
  126.  * you need to change the _scg_version and _scg_auth* string below.
  127.  * You may not return "schily" for an SCG_AUTHOR request anymore.
  128.  * Choose your name instead of "schily" and make clear that the version
  129.  * string is related to a modified source.
  130.  */
  131. LOCAL char _scg_trans_version[] = "scsihack.c-1.25"; /* The version for this transport*/
  132. /*
  133.  * Return version information for the low level SCSI transport code.
  134.  * This has been introduced to make it easier to trace down problems
  135.  * in applications.
  136.  */
  137. EXPORT char *
  138. scg__version(scgp, what)
  139. SCSI *scgp;
  140. int what;
  141. {
  142. if (scgp != (SCSI *)0) {
  143. switch (what) {
  144. case SCG_VERSION:
  145. return (_scg_trans_version);
  146. /*
  147.  * If you changed this source, you are not allowed to
  148.  * return "schily" for the SCG_AUTHOR request.
  149.  */
  150. case SCG_AUTHOR:
  151. return (_scg_auth_schily);
  152. case SCG_SCCS_ID:
  153. return (_sccsid);
  154. }
  155. }
  156. return ((char *)0);
  157. }
  158. EXPORT
  159. int scsi_open(scgp, device, busno, tgt, tlun)
  160. SCSI *scgp;
  161. char *device;
  162. int busno;
  163. int tgt;
  164. int tlun;
  165. {
  166. comerrno(EX_BAD, "No SCSI transport implementation for this architecture.n");
  167. return (-1); /* Keep lint happy */
  168. }
  169. EXPORT int
  170. scsi_close(scgp)
  171. SCSI *scgp;
  172. {
  173. return (-1);
  174. }
  175. LOCAL long
  176. scsi_maxdma(scgp)
  177. SCSI *scgp;
  178. {
  179. return (0L);
  180. }
  181. EXPORT void
  182. scsi_freebuf(scgp)
  183. SCSI *scgp;
  184. {
  185. }
  186. EXPORT
  187. BOOL scsi_havebus(scgp, busno)
  188. SCSI *scgp;
  189. int busno;
  190. {
  191. return (FALSE);
  192. }
  193. EXPORT
  194. int scsi_fileno(scgp, busno, tgt, tlun)
  195. SCSI *scgp;
  196. int busno;
  197. int tgt;
  198. int tlun;
  199. {
  200. return (-1);
  201. }
  202. EXPORT int
  203. scsi_initiator_id(scgp)
  204. SCSI *scgp;
  205. {
  206. return (-1);
  207. }
  208. EXPORT
  209. int scsi_isatapi(scgp)
  210. SCSI *scgp;
  211. {
  212. return (FALSE);
  213. }
  214. EXPORT
  215. int scsireset(scgp)
  216. SCSI *scgp;
  217. {
  218. return (-1);
  219. }
  220. EXPORT void *
  221. scsi_getbuf(scgp, amt)
  222. SCSI *scgp;
  223. long amt;
  224. {
  225. return ((void *)0);
  226. }
  227. LOCAL int
  228. scsi_send(scgp, f, sp)
  229. SCSI *scgp;
  230. int f;
  231. struct scg_cmd *sp;
  232. {
  233. return (-1);
  234. }
  235. #endif /* SCSI_IMPL */