tapeFsLib.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:5k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* tapeFsLib.h - header for tape sequential device file system library */
  2. /* Copyright 1984-1995 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01a,17jul95,jds  written
  7. */
  8. #ifndef __INCtapeFsLibh
  9. #define __INCtapeFsLibh
  10. #ifdef __cplusplus
  11. extern "C" {
  12. #endif
  13. #include "seqIo.h"
  14. #include "iosLib.h"
  15. #include "semLib.h"
  16. #include "vwModNum.h"
  17. /* Tape configuration parameters structure */
  18. typedef struct  /* TAPE_CONFIG */
  19.     {
  20.     int  blkSize; /* 0 => variable blocksize; > 0 => fixed blocksize */
  21.     BOOL rewind; /* TRUE => a rewind device; FALSE => no rewind     */
  22.     int  numFileMarks; /* How many filemarks to write upon closing a file */
  23.     int  density; /* Tape density, which is a SEQ_DEV parameter      */ 
  24.     } TAPE_CONFIG;
  25. /* Tape volume descriptor */
  26. typedef struct /* TAPE_VOL_DESC */
  27.     {
  28.     DEV_HDR     tapevd_devHdr; /* std. I/O system device header      */
  29.     SEM_ID     tapevd_semId; /* volume descriptor semaphore id     */
  30.     SEQ_DEV *       tapevd_pSeqDev; /* ptr to sequential device info      */
  31.     struct tapefd * tapevd_pTapeFd; /* ptr to file descriptor        */
  32.     int     tapevd_status; /* (OK | ERROR)                       */
  33.     int     tapevd_state; /* state of volume (see below)        */
  34.     int     tapevd_retry; /* current retry count for I/O errors */
  35.     BOOL     tapevd_rewind; /* is this a rewind | norewind volume */
  36.     int     tapevd_blkSize; /* 0 => variable blk; >0 => fixed blk */
  37.     int     tapevd_numFileMarks;/* num of f-marks to write upon close */
  38.     int     tapevd_density; /* density of the tape device         */
  39.     } TAPE_VOL_DESC;
  40. /* Tape file descriptor */
  41. typedef struct tapefd /* TAPE_FILE_DESC */
  42.     {
  43.     TAPE_VOL_DESC * tapefd_pTapeVol; /* pointer to tape volume descriptor */
  44.     BOOL     tapefd_inUse; /* is the tape fd in use             */
  45.     int       tapefd_mode; /* mode of tape O_RDONLY | O_WRONLY  */
  46. /* Buffering is used for fixed blocks only   */
  47.     char *     tapefd_buffer; /* pointer to read/write buffer area */
  48.     int      tapefd_bufSize; /* buffer size       */
  49.     int     tapefd_bufIndex; /* current byte index within the buf */
  50.     } TAPE_FILE_DESC;
  51. /*
  52.  * Structure that defines the Unix MT ioctl parameter passed to the ioctl 
  53.  * routine in tapeFsLib
  54.  */
  55. typedef struct mtop 
  56.     {
  57.     short  mt_op; /* operation */
  58.     int mt_count; /* number of operations */
  59.     } MTOP;
  60. /* Volume states */
  61. #define TAPE_VD_READY_CHANGED 0 /* vol not accessed since ready change*/
  62. #define TAPE_VD_MOUNTED 2 /* volume mounted                     */
  63. #define TAPE_VD_UNMOUNTED   4 /* volume unmounted                   */
  64. #define VARIABLE_BLOCK_SIZE     0  /* blkSize of 0 means variable block  */
  65. #define LOAD    TRUE /* load or mount a volume             */
  66. #define UNLOAD  FALSE  /* unload or unmount a volume         */
  67. #define LONG    TRUE  /* erase entire tape (long erase)     */
  68. #define RETEN   TRUE  /* retension the tape during load     */
  69. #define EOT   TRUE  /* unload tape at the end-of-tape     */
  70. #define FIXED_BLK TRUE /* use fixed block size               */
  71. #define VARIABLE_BLK FALSE   /* use variable block size       */
  72. /* defined in scsiLib */
  73. #define SPACE_CODE_DATABLK   0x00    /* space data blocks       */
  74. #define SPACE_CODE_FILEMARK  0x01 /* space file-marks       */
  75. /* I/O controls */
  76. /* MTIOCTOP operations */
  77. #define MTWEOF          0       /* write an end-of-file record */
  78. #define MTFSF           1       /* forward space over file mark */
  79. #define MTBSF           2       /* backward space over file mark (1/2" only) */
  80. #define MTFSR           3       /* forward space to inter-record gap */
  81. #define MTBSR           4       /* backward space to inter-record gap */
  82. #define MTREW           5       /* rewind */
  83. #define MTOFFL          6       /* rewind and put the drive offline */
  84. #define MTNOP           7       /* no operation, sets status only */
  85. #define MTRETEN         8       /* retension the tape (cartridge tape only) */
  86. #define MTERASE         9       /* erase the entire tape */
  87. #define MTEOM           10      /* position to end of media */
  88. #define MTNBSF          11      /* backward space file to BOF */
  89. /* tapeFsLib errnos */
  90. #define S_tapeFsLib_NO_SEQ_DEV  (M_tapeFsLib | 1)
  91. #define S_tapeFsLib_ILLEGAL_TAPE_CONFIG_PARM  (M_tapeFsLib | 2)
  92. #define S_tapeFsLib_SERVICE_NOT_AVAILABLE (M_tapeFsLib | 3)
  93. #define S_tapeFsLib_INVALID_BLOCK_SIZE (M_tapeFsLib | 4)
  94. #define S_tapeFsLib_ILLEGAL_FILE_SYSTEM_NAME (M_tapeFsLib | 5)
  95. #define S_tapeFsLib_ILLEGAL_FLAGS (M_tapeFsLib | 6)
  96. #define S_tapeFsLib_FILE_DESCRIPTOR_BUSY (M_tapeFsLib | 7)
  97. #define S_tapeFsLib_VOLUME_NOT_AVAILABLE (M_tapeFsLib | 8)
  98. #define S_tapeFsLib_BLOCK_SIZE_MISMATCH (M_tapeFsLib | 9)
  99. #define S_tapeFsLib_INVALID_NUMBER_OF_BYTES (M_tapeFsLib | 10)
  100. /* Function declarations */
  101. #if defined(__STDC__) || defined(__cplusplus)
  102. extern TAPE_VOL_DESC * tapeFsDevInit (char *volName, SEQ_DEV *pBlkDev,
  103.     TAPE_CONFIG *pTapeConfig);
  104. extern STATUS         tapeFsInit ();
  105. extern STATUS         tapeFsVolUnmount (TAPE_VOL_DESC *vdptr);
  106. extern STATUS         tapeFsReadyChange (TAPE_VOL_DESC *vdptr);
  107. #else /* __STDC__ */
  108. extern TAPE_VOL_DESC * tapeFsDevInit ();
  109. extern STATUS         tapeFsInit ();
  110. extern STATUS         tapeFsVolUnmount ();
  111. extern STATUS         tapeFsReadyChange ();
  112. #endif /* __STDC__ */
  113. #ifdef __cplusplus
  114. }
  115. #endif
  116. #endif /* __INCtapeFsLibh */