scsitransp.h
上传用户:weiliju62
上传日期:2007-01-06
资源大小:619k
文件大小:4k
源码类别:

SCSI/ASPI

开发平台:

MultiPlatform

  1. /* @(#)scsitransp.h 1.24 99/09/07 Copyright 1995 J. Schilling */
  2. /*
  3.  * Definitions for commands that use functions from scsitransp.c
  4.  *
  5.  * Copyright (c) 1995 J. Schilling
  6.  */
  7. /*
  8.  * This program is free software; you can redistribute it and/or modify
  9.  * it under the terms of the GNU General Public License as published by
  10.  * the Free Software Foundation; either version 2, or (at your option)
  11.  * any later version.
  12.  *
  13.  * This program is distributed in the hope that it will be useful,
  14.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16.  * GNU General Public License for more details.
  17.  *
  18.  * You should have received a copy of the GNU General Public License
  19.  * along with this program; see the file COPYING.  If not, write to
  20.  * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  21.  */
  22. #ifndef _SCSITRANSP_H
  23. #define _SCSITRANSP_H
  24. typedef struct {
  25. int scsibus; /* SCSI bus #    for next I/O */
  26. int target; /* SCSI target # for next I/O */
  27. int lun; /* SCSI lun #    for next I/O */
  28. int flags; /* Libscg flags (see below) */
  29. int kdebug; /* Kernel debug value for next I/O */
  30. int debug; /* Debug value for SCSI library */
  31. int silent; /* Be silent if value > 0 */
  32. int verbose; /* Be verbose if value > 0 */
  33. int disre_disable;
  34. int deftimeout;
  35. int noparity; /* Do not use SCSI parity fo next I/O */
  36. int dev; /* from scsi_cdr.c */
  37. struct scg_cmd *scmd;
  38. char *cmdname;
  39. char *curcmdname;
  40. BOOL running;
  41. int error; /* libscg error number */
  42. struct timeval *cmdstart;
  43. struct timeval *cmdstop;
  44. const char **nonstderrs;
  45. void *local; /* Local data from the low level code */
  46. void *bufbase; /* needed for scsi_freebuf() */
  47. char *errstr; /* Error string for scsi_open/sendmcd */
  48. char *errptr; /* Actual write pointer into errstr */
  49. struct scsi_inquiry *inq;
  50. struct scsi_capacity *cap;
  51. } SCSI;
  52. /*
  53.  * Flags for struct SCSI:
  54.  */
  55. /* NONE yet */
  56. #define SCSI_ERRSTR_SIZE 4096
  57. /*
  58.  * Libscg error codes:
  59.  */
  60. #define SCG_ERRBASE 1000000
  61. #define SCG_NOMEM 1000001
  62. /*
  63.  * From scsitransp.c:
  64.  */
  65. #ifdef __cplusplus
  66. extern "C" {
  67. #endif
  68. extern int scsi_open __PR((SCSI *scgp, char *device, int busno, int tgt, int tlun));
  69. extern int scsi_close __PR((SCSI *scgp));
  70. extern BOOL scsi_havebus __PR((SCSI *scgp, int));
  71. extern int scsi_fileno __PR((SCSI *scgp, int, int, int));
  72. extern int scsi_initiator_id __PR((SCSI *scgp));
  73. extern int scsi_isatapi __PR((SCSI *scgp));
  74. extern int scsireset __PR((SCSI *scgp));
  75. extern void *scsi_getbuf __PR((SCSI *scgp, long));
  76. extern void scsi_freebuf __PR((SCSI *scgp));
  77. extern long scsi_bufsize __PR((SCSI *scgp, long));
  78. extern void scsi_setnonstderrs __PR((SCSI *scgp, const char **));
  79. extern int scsicmd __PR((SCSI *scgp));
  80. extern int scsigetresid __PR((SCSI *scgp));
  81. extern void scsiprinterr __PR((SCSI *scgp));
  82. extern void scsiprintcdb __PR((SCSI *scgp));
  83. extern void scsiprintwdata __PR((SCSI *scgp));
  84. extern void scsiprintrdata __PR((SCSI *scgp));
  85. extern void scsiprintresult __PR((SCSI *scgp));
  86. extern void scsiprintstatus __PR((SCSI *scgp));
  87. extern void scsiprbytes __PR((char *, unsigned char *, int));
  88. extern void scsiprsense __PR((unsigned char *, int));
  89. extern int scsi_sense_key __PR((SCSI *scgp));
  90. extern int scsi_sense_code __PR((SCSI *scgp));
  91. extern int scsi_sense_qual __PR((SCSI *scgp));
  92. #ifdef _SCSIREG_H
  93. extern void scsiprintdev __PR((struct scsi_inquiry *));
  94. #endif
  95. /*
  96.  * From scsierrmsg.c:
  97.  */
  98. extern const char *scsisensemsg __PR((int, int, int,
  99. const char **, char *));
  100. #ifdef _SCGIO_H
  101. extern void scsierrmsg __PR((SCSI *scgp, struct scsi_sense *,
  102. struct scsi_status *,
  103. int, const char **));
  104. #endif
  105. /*
  106.  * From scsiopen.c:
  107.  */
  108. extern SCSI *open_scsi __PR((char *scsidev, char *errs, int slen, int debug, int be_verbose));
  109. extern int close_scsi __PR((SCSI * scgp));
  110. extern void scsi_settimeout __PR((SCSI * scgp, int timeout));
  111. extern SCSI *scsi_smalloc __PR((void));
  112. extern void scsi_sfree __PR((SCSI *scgp));
  113. #ifdef __cplusplus
  114. }
  115. #endif
  116. #endif /* _SCSITRANSP_H */