~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/drivers/scsi/osst.h

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  *      $Header: /home/cvsroot/Driver/osst.h,v 1.9 2000/10/08 03:09:43 riede Exp $
  3  */
  4 
  5 #include <asm/byteorder.h>
  6 #include <linux/config.h>
  7 #ifdef CONFIG_DEVFS_FS
  8 #include <linux/devfs_fs_kernel.h>
  9 #endif
 10 
 11 /*      FIXME - rename and use the following two types or delete them!
 12  *              and the types really should go to st.h anyway...
 13  *      INQUIRY packet command - Data Format (From Table 6-8 of QIC-157C)
 14  */
 15 typedef struct {
 16         unsigned        device_type     :5;     /* Peripheral Device Type */
 17         unsigned        reserved0_765   :3;     /* Peripheral Qualifier - Reserved */
 18         unsigned        reserved1_6t0   :7;     /* Reserved */
 19         unsigned        rmb             :1;     /* Removable Medium Bit */
 20         unsigned        ansi_version    :3;     /* ANSI Version */
 21         unsigned        ecma_version    :3;     /* ECMA Version */
 22         unsigned        iso_version     :2;     /* ISO Version */
 23         unsigned        response_format :4;     /* Response Data Format */
 24         unsigned        reserved3_45    :2;     /* Reserved */
 25         unsigned        reserved3_6     :1;     /* TrmIOP - Reserved */
 26         unsigned        reserved3_7     :1;     /* AENC - Reserved */
 27         u8              additional_length;      /* Additional Length (total_length-4) */
 28         u8              rsv5, rsv6, rsv7;       /* Reserved */
 29         u8              vendor_id[8];           /* Vendor Identification */
 30         u8              product_id[16];         /* Product Identification */
 31         u8              revision_level[4];      /* Revision Level */
 32         u8              vendor_specific[20];    /* Vendor Specific - Optional */
 33         u8              reserved56t95[40];      /* Reserved - Optional */
 34                                                 /* Additional information may be returned */
 35 } idetape_inquiry_result_t;
 36 
 37 /*
 38  *      READ POSITION packet command - Data Format (From Table 6-57)
 39  */
 40 typedef struct {
 41         unsigned        reserved0_10    :2;     /* Reserved */
 42         unsigned        bpu             :1;     /* Block Position Unknown */    
 43         unsigned        reserved0_543   :3;     /* Reserved */
 44         unsigned        eop             :1;     /* End Of Partition */
 45         unsigned        bop             :1;     /* Beginning Of Partition */
 46         u8              partition;              /* Partition Number */
 47         u8              reserved2, reserved3;   /* Reserved */
 48         u32             first_block;            /* First Block Location */
 49         u32             last_block;             /* Last Block Location (Optional) */
 50         u8              reserved12;             /* Reserved */
 51         u8              blocks_in_buffer[3];    /* Blocks In Buffer - (Optional) */
 52         u32             bytes_in_buffer;        /* Bytes In Buffer (Optional) */
 53 } idetape_read_position_result_t;
 54 
 55 /*
 56  *      Follows structures which are related to the SELECT SENSE / MODE SENSE
 57  *      packet commands. 
 58  */
 59 #define COMPRESSION_PAGE           0x0f
 60 #define COMPRESSION_PAGE_LENGTH    16
 61 
 62 #define CAPABILITIES_PAGE          0x2a
 63 #define CAPABILITIES_PAGE_LENGTH   20
 64 
 65 #define TAPE_PARAMTR_PAGE          0x2b
 66 #define TAPE_PARAMTR_PAGE_LENGTH   16
 67 
 68 #define NUMBER_RETRIES_PAGE        0x2f
 69 #define NUMBER_RETRIES_PAGE_LENGTH 4
 70 
 71 #define BLOCK_SIZE_PAGE            0x30
 72 #define BLOCK_SIZE_PAGE_LENGTH     4
 73 
 74 #define BUFFER_FILLING_PAGE        0x33
 75 #define BUFFER_FILLING_PAGE_LENGTH 
 76 
 77 #define VENDOR_IDENT_PAGE          0x36
 78 #define VENDOR_IDENT_PAGE_LENGTH   8
 79 
 80 #define LOCATE_STATUS_PAGE         0x37
 81 #define LOCATE_STATUS_PAGE_LENGTH  0
 82 
 83 #define MODE_HEADER_LENGTH         4
 84 
 85 
 86 /*
 87  *      REQUEST SENSE packet command result - Data Format.
 88  */
 89 typedef struct {
 90         unsigned        error_code      :7;     /* Current of deferred errors */
 91         unsigned        valid           :1;     /* The information field conforms to QIC-157C */
 92         u8              reserved1       :8;     /* Segment Number - Reserved */
 93         unsigned        sense_key       :4;     /* Sense Key */
 94         unsigned        reserved2_4     :1;     /* Reserved */
 95         unsigned        ili             :1;     /* Incorrect Length Indicator */
 96         unsigned        eom             :1;     /* End Of Medium */
 97         unsigned        filemark        :1;     /* Filemark */
 98         u32             information __attribute__ ((packed));
 99         u8              asl;                    /* Additional sense length (n-7) */
100         u32             command_specific;       /* Additional command specific information */
101         u8              asc;                    /* Additional Sense Code */
102         u8              ascq;                   /* Additional Sense Code Qualifier */
103         u8              replaceable_unit_code;  /* Field Replaceable Unit Code */
104         unsigned        sk_specific1    :7;     /* Sense Key Specific */
105         unsigned        sksv            :1;     /* Sense Key Specific information is valid */
106         u8              sk_specific2;           /* Sense Key Specific */
107         u8              sk_specific3;           /* Sense Key Specific */
108         u8              pad[2];                 /* Padding to 20 bytes */
109 } idetape_request_sense_result_t;
110 
111 /*
112  *      Mode Parameter Header for the MODE SENSE packet command
113  */
114 typedef struct {
115         u8              mode_data_length;       /* Length of the following data transfer */
116         u8              medium_type;            /* Medium Type */
117         u8              dsp;                    /* Device Specific Parameter */
118         u8              bdl;                    /* Block Descriptor Length */
119 } osst_mode_parameter_header_t;
120 
121 /*
122  *      Mode Parameter Block Descriptor the MODE SENSE packet command
123  *
124  *      Support for block descriptors is optional.
125  */
126 typedef struct {
127         u8              density_code;           /* Medium density code */
128         u8              blocks[3];              /* Number of blocks */
129         u8              reserved4;              /* Reserved */
130         u8              length[3];              /* Block Length */
131 } osst_parameter_block_descriptor_t;
132 
133 /*
134  *      The Data Compression Page, as returned by the MODE SENSE packet command.
135  */
136 typedef struct {
137 #if   defined(__BIG_ENDIAN_BITFIELD)
138         unsigned        ps              :1;
139         unsigned        reserved0       :1;     /* Reserved */
140         unsigned        page_code       :6;     /* Page Code - Should be 0xf */
141 #elif defined(__LITTLE_ENDIAN_BITFIELD)
142         unsigned        page_code       :6;     /* Page Code - Should be 0xf */
143         unsigned        reserved0       :1;     /* Reserved */
144         unsigned        ps              :1;
145 #else
146 #error "Please fix <asm/byteorder.h>"
147 #endif
148         u8              page_length;            /* Page Length - Should be 14 */
149 #if   defined(__BIG_ENDIAN_BITFIELD)
150         unsigned        dce             :1;     /* Data Compression Enable */
151         unsigned        dcc             :1;     /* Data Compression Capable */
152         unsigned        reserved2       :6;     /* Reserved */
153 #elif defined(__LITTLE_ENDIAN_BITFIELD)
154         unsigned        reserved2       :6;     /* Reserved */
155         unsigned        dcc             :1;     /* Data Compression Capable */
156         unsigned        dce             :1;     /* Data Compression Enable */
157 #else
158 #error "Please fix <asm/byteorder.h>"
159 #endif
160 #if   defined(__BIG_ENDIAN_BITFIELD)
161         unsigned        dde             :1;     /* Data Decompression Enable */
162         unsigned        red             :2;     /* Report Exception on Decompression */
163         unsigned        reserved3       :5;     /* Reserved */
164 #elif defined(__LITTLE_ENDIAN_BITFIELD)
165         unsigned        reserved3       :5;     /* Reserved */
166         unsigned        red             :2;     /* Report Exception on Decompression */
167         unsigned        dde             :1;     /* Data Decompression Enable */
168 #else
169 #error "Please fix <asm/byteorder.h>"
170 #endif
171         u32             ca;                     /* Compression Algorithm */
172         u32             da;                     /* Decompression Algorithm */
173         u8              reserved[4];            /* Reserved */
174 } osst_data_compression_page_t;
175 
176 /*
177  *      The Medium Partition Page, as returned by the MODE SENSE packet command.
178  */
179 typedef struct {
180 #if   defined(__BIG_ENDIAN_BITFIELD)
181         unsigned        ps              :1;
182         unsigned        reserved1_6     :1;     /* Reserved */
183         unsigned        page_code       :6;     /* Page Code - Should be 0x11 */
184 #elif defined(__LITTLE_ENDIAN_BITFIELD)
185         unsigned        page_code       :6;     /* Page Code - Should be 0x11 */
186         unsigned        reserved1_6     :1;     /* Reserved */
187         unsigned        ps              :1;
188 #else
189 #error "Please fix <asm/byteorder.h>"
190 #endif
191         u8              page_length;            /* Page Length - Should be 6 */
192         u8              map;                    /* Maximum Additional Partitions - Should be 0 */
193         u8              apd;                    /* Additional Partitions Defined - Should be 0 */
194 #if   defined(__BIG_ENDIAN_BITFIELD)
195         unsigned        fdp             :1;     /* Fixed Data Partitions */
196         unsigned        sdp             :1;     /* Should be 0 */
197         unsigned        idp             :1;     /* Should be 0 */
198         unsigned        psum            :2;     /* Should be 0 */
199         unsigned        reserved4_012   :3;     /* Reserved */
200 #elif defined(__LITTLE_ENDIAN_BITFIELD)
201         unsigned        reserved4_012   :3;     /* Reserved */
202         unsigned        psum            :2;     /* Should be 0 */
203         unsigned        idp             :1;     /* Should be 0 */
204         unsigned        sdp             :1;     /* Should be 0 */
205         unsigned        fdp             :1;     /* Fixed Data Partitions */
206 #else
207 #error "Please fix <asm/byteorder.h>"
208 #endif
209         u8              mfr;                    /* Medium Format Recognition */
210         u8              reserved[2];            /* Reserved */
211 } osst_medium_partition_page_t;
212 
213 /*
214  *      Capabilities and Mechanical Status Page
215  */
216 typedef struct {
217 #if   defined(__BIG_ENDIAN_BITFIELD)
218         unsigned        reserved1_67    :2;
219         unsigned        page_code       :6;     /* Page code - Should be 0x2a */
220 #elif defined(__LITTLE_ENDIAN_BITFIELD)
221         unsigned        page_code       :6;     /* Page code - Should be 0x2a */
222         unsigned        reserved1_67    :2;
223 #else
224 #error "Please fix <asm/byteorder.h>"
225 #endif
226         u8              page_length;            /* Page Length - Should be 0x12 */
227         u8              reserved2, reserved3;
228 #if   defined(__BIG_ENDIAN_BITFIELD)
229         unsigned        reserved4_67    :2;
230         unsigned        sprev           :1;     /* Supports SPACE in the reverse direction */
231         unsigned        reserved4_1234  :4;
232         unsigned        ro              :1;     /* Read Only Mode */
233 #elif defined(__LITTLE_ENDIAN_BITFIELD)
234         unsigned        ro              :1;     /* Read Only Mode */
235         unsigned        reserved4_1234  :4;
236         unsigned        sprev           :1;     /* Supports SPACE in the reverse direction */
237         unsigned        reserved4_67    :2;
238 #else
239 #error "Please fix <asm/byteorder.h>"
240 #endif
241 #if   defined(__BIG_ENDIAN_BITFIELD)
242         unsigned        reserved5_67    :2;
243         unsigned        qfa             :1;     /* Supports the QFA two partition formats */
244         unsigned        reserved5_4     :1;
245         unsigned        efmt            :1;     /* Supports ERASE command initiated formatting */
246         unsigned        reserved5_012   :3;
247 #elif defined(__LITTLE_ENDIAN_BITFIELD)
248         unsigned        reserved5_012   :3;
249         unsigned        efmt            :1;     /* Supports ERASE command initiated formatting */
250         unsigned        reserved5_4     :1;
251         unsigned        qfa             :1;     /* Supports the QFA two partition formats */
252         unsigned        reserved5_67    :2;
253 #else
254 #error "Please fix <asm/byteorder.h>"
255 #endif
256 #if   defined(__BIG_ENDIAN_BITFIELD)
257         unsigned        cmprs           :1;     /* Supports data compression */
258         unsigned        ecc             :1;     /* Supports error correction */
259         unsigned        reserved6_45    :2;     /* Reserved */  
260         unsigned        eject           :1;     /* The device can eject the volume */
261         unsigned        prevent         :1;     /* The device defaults in the prevent state after power up */
262         unsigned        locked          :1;     /* The volume is locked */
263         unsigned        lock            :1;     /* Supports locking the volume */
264 #elif defined(__LITTLE_ENDIAN_BITFIELD)
265         unsigned        lock            :1;     /* Supports locking the volume */
266         unsigned        locked          :1;     /* The volume is locked */
267         unsigned        prevent         :1;     /* The device defaults in the prevent state after power up */
268         unsigned        eject           :1;     /* The device can eject the volume */
269         unsigned        reserved6_45    :2;     /* Reserved */  
270         unsigned        ecc             :1;     /* Supports error correction */
271         unsigned        cmprs           :1;     /* Supports data compression */
272 #else
273 #error "Please fix <asm/byteorder.h>"
274 #endif
275 #if   defined(__BIG_ENDIAN_BITFIELD)
276         unsigned        blk32768        :1;     /* slowb - the device restricts the byte count for PIO */
277                                                 /* transfers for slow buffer memory ??? */
278                                                 /* Also 32768 block size in some cases */
279         unsigned        reserved7_3_6   :4;
280         unsigned        blk1024         :1;     /* Supports 1024 bytes block size */
281         unsigned        blk512          :1;     /* Supports 512 bytes block size */
282         unsigned        reserved7_0     :1;
283 #elif defined(__LITTLE_ENDIAN_BITFIELD)
284         unsigned        reserved7_0     :1;
285         unsigned        blk512          :1;     /* Supports 512 bytes block size */
286         unsigned        blk1024         :1;     /* Supports 1024 bytes block size */
287         unsigned        reserved7_3_6   :4;
288         unsigned        blk32768        :1;     /* slowb - the device restricts the byte count for PIO */
289                                                 /* transfers for slow buffer memory ??? */
290                                                 /* Also 32768 block size in some cases */
291 #else
292 #error "Please fix <asm/byteorder.h>"
293 #endif
294         u16             max_speed;              /* Maximum speed supported in KBps */
295         u8              reserved10, reserved11;
296         u16             ctl;                    /* Continuous Transfer Limit in blocks */
297         u16             speed;                  /* Current Speed, in KBps */
298         u16             buffer_size;            /* Buffer Size, in 512 bytes */
299         u8              reserved18, reserved19;
300 } osst_capabilities_page_t;
301 
302 /*
303  *      Block Size Page
304  */
305 typedef struct {
306 #if   defined(__BIG_ENDIAN_BITFIELD)
307         unsigned        ps              :1;
308         unsigned        reserved1_6     :1;
309         unsigned        page_code       :6;     /* Page code - Should be 0x30 */
310 #elif defined(__LITTLE_ENDIAN_BITFIELD)
311         unsigned        page_code       :6;     /* Page code - Should be 0x30 */
312         unsigned        reserved1_6     :1;
313         unsigned        ps              :1;
314 #else
315 #error "Please fix <asm/byteorder.h>"
316 #endif
317         u8              page_length;            /* Page Length - Should be 2 */
318         u8              reserved2;
319 #if   defined(__BIG_ENDIAN_BITFIELD)
320         unsigned        one             :1;
321         unsigned        reserved2_6     :1;
322         unsigned        record32_5      :1;
323         unsigned        record32        :1;
324         unsigned        reserved2_23    :2;
325         unsigned        play32_5        :1;
326         unsigned        play32          :1;
327 #elif defined(__LITTLE_ENDIAN_BITFIELD)
328         unsigned        play32          :1;
329         unsigned        play32_5        :1;
330         unsigned        reserved2_23    :2;
331         unsigned        record32        :1;
332         unsigned        record32_5      :1;
333         unsigned        reserved2_6     :1;
334         unsigned        one             :1;
335 #else
336 #error "Please fix <asm/byteorder.h>"
337 #endif
338 } osst_block_size_page_t;
339 
340 /*
341  *      Tape Parameters Page
342  */
343 typedef struct {
344 #if   defined(__BIG_ENDIAN_BITFIELD)
345         unsigned        ps              :1;
346         unsigned        reserved1_6     :1;
347         unsigned        page_code       :6;     /* Page code - Should be 0x2b */
348 #elif defined(__LITTLE_ENDIAN_BITFIELD)
349         unsigned        page_code       :6;     /* Page code - Should be 0x2b */
350         unsigned        reserved1_6     :1;
351         unsigned        ps              :1;
352 #else
353 #error "Please fix <asm/byteorder.h>"
354 #endif
355         u8              reserved2;
356         u8              density;
357         u8              reserved3,reserved4;
358         u16             segtrk;
359         u16             trks;
360         u8              reserved5,reserved6,reserved7,reserved8,reserved9,reserved10;
361 } osst_tape_paramtr_page_t;
362 
363 /* OnStream definitions */
364 
365 #define OS_CONFIG_PARTITION     (0xff)
366 #define OS_DATA_PARTITION       (0)
367 #define OS_PARTITION_VERSION    (1)
368 
369 /*
370  * partition
371  */
372 typedef struct os_partition_s {
373         __u8    partition_num;
374         __u8    par_desc_ver;
375         __u16   wrt_pass_cntr;
376         __u32   first_frame_ppos;
377         __u32   last_frame_ppos;
378         __u32   eod_frame_ppos;
379 } os_partition_t;
380 
381 /*
382  * DAT entry
383  */
384 typedef struct os_dat_entry_s {
385         __u32   blk_sz;
386         __u16   blk_cnt;
387         __u8    flags;
388         __u8    reserved;
389 } os_dat_entry_t;
390 
391 /*
392  * DAT
393  */
394 #define OS_DAT_FLAGS_DATA       (0xc)
395 #define OS_DAT_FLAGS_MARK       (0x1)
396 
397 typedef struct os_dat_s {
398         __u8            dat_sz;
399         __u8            reserved1;
400         __u8            entry_cnt;
401         __u8            reserved3;
402         os_dat_entry_t  dat_list[16];
403 } os_dat_t;
404 
405 /*
406  * Frame types
407  */
408 #define OS_FRAME_TYPE_FILL      (0)
409 #define OS_FRAME_TYPE_EOD       (1 << 0)
410 #define OS_FRAME_TYPE_MARKER    (1 << 1)
411 #define OS_FRAME_TYPE_HEADER    (1 << 3)
412 #define OS_FRAME_TYPE_DATA      (1 << 7)
413 
414 /*
415  * AUX
416  */
417 typedef struct os_aux_s {
418         __u32           format_id;              /* hardware compability AUX is based on */
419         char            application_sig[4];     /* driver used to write this media */
420         __u32           hdwr;                   /* reserved */
421         __u32           update_frame_cntr;      /* for configuration frame */
422         __u8            frame_type;
423         __u8            frame_type_reserved;
424         __u8            reserved_18_19[2];
425         os_partition_t  partition;
426         __u8            reserved_36_43[8];
427         __u32           frame_seq_num;
428         __u32           logical_blk_num_high;
429         __u32           logical_blk_num;
430         os_dat_t        dat;
431         __u8            reserved188_191[4];
432         __u32           filemark_cnt;
433         __u32           phys_fm;
434         __u32           last_mark_ppos;
435         __u8            reserved204_223[20];
436 
437         /*
438          * __u8         app_specific[32];
439          *
440          * Linux specific fields:
441          */
442          __u32          next_mark_ppos;         /* when known, points to next marker */
443          __u8           linux_specific[28];
444 
445         __u8            reserved_256_511[256];
446 } os_aux_t;
447 
448 #define OS_FM_TAB_MAX 1024
449 
450 typedef struct os_fm_tab_s {
451         __u8            fm_part_num;
452         __u8            reserved_1;
453         __u8            fm_tab_ent_sz;
454         __u8            reserved_3;
455         __u16           fm_tab_ent_cnt;
456         __u8            reserved6_15[10];
457         __u32           fm_tab_ent[OS_FM_TAB_MAX];
458 } os_fm_tab_t;
459 
460 typedef struct os_ext_trk_ey_s {
461         __u8            et_part_num;
462         __u8            fmt;
463         __u16           fm_tab_off;
464         __u8            reserved4_7[4];
465         __u32           last_hlb_hi;
466         __u32           last_hlb;
467         __u32           last_pp;
468         __u8            reserved20_31[12];
469 } os_ext_trk_ey_t;
470 
471 typedef struct os_ext_trk_tb_s {
472         __u8            nr_stream_part;
473         __u8            reserved_1;
474         __u8            et_ent_sz;
475         __u8            reserved3_15[13];
476         os_ext_trk_ey_t dat_ext_trk_ey;
477         os_ext_trk_ey_t qfa_ext_trk_ey;
478 } os_ext_trk_tb_t;
479 
480 typedef struct os_header_s {
481         char            ident_str[8];
482         __u8            major_rev;
483         __u8            minor_rev;
484         __u16           ext_trk_tb_off;
485         __u8            reserved12_15[4];
486         __u8            pt_par_num;
487         __u8            pt_reserved1_3[3];
488         os_partition_t  partition[16];
489         __u32           cfg_col_width;
490         __u32           dat_col_width;
491         __u32           qfa_col_width;
492         __u8            cartridge[16];
493         __u8            reserved304_511[208];
494         __u32           old_filemark_list[16680/4];             /* in ADR 1.4 __u8 track_table[16680] */
495         os_ext_trk_tb_t ext_track_tb;
496         __u8            reserved17272_17735[464];
497         os_fm_tab_t     dat_fm_tab;
498         os_fm_tab_t     qfa_fm_tab;
499         __u8            reserved25960_32767[6808];
500 } os_header_t;
501 
502 
503 /*
504  * OnStream ADRL frame
505  */
506 #define OS_FRAME_SIZE   (32 * 1024 + 512)
507 #define OS_DATA_SIZE    (32 * 1024)
508 #define OS_AUX_SIZE     (512)
509 //#define OSST_MAX_SG      2
510 
511 /* The tape buffer descriptor. */
512 typedef struct {
513   unsigned char in_use;
514   unsigned char dma;    /* DMA-able buffer */
515   int buffer_size;
516   int buffer_blocks;
517   int buffer_bytes;
518   int read_pointer;
519   int writing;
520   int midlevel_result;
521   int syscall_result;
522   Scsi_Request *last_SRpnt;
523   unsigned char *b_data;
524   os_aux_t *aux;               /* onstream AUX structure at end of each block */
525   unsigned short use_sg;       /* zero or number of segments for this adapter */
526   unsigned short sg_segs;      /* total number of allocated segments */
527   unsigned short orig_sg_segs; /* number of segments allocated at first try */
528   struct scatterlist sg[1];    /* MUST BE last item */
529 } OSST_buffer;
530 
531 /* The tape drive descriptor */
532 typedef struct {
533   kdev_t devt;
534   unsigned capacity;
535   Scsi_Device* device;
536   struct semaphore lock;       /* for serialization */
537   struct semaphore sem;        /* for SCSI commands */
538   OSST_buffer * buffer;
539 
540   /* Drive characteristics */
541   unsigned char omit_blklims;
542   unsigned char do_auto_lock;
543   unsigned char can_bsr;
544   unsigned char can_partitions;
545   unsigned char two_fm;
546   unsigned char fast_mteom;
547   unsigned char restr_dma;
548   unsigned char scsi2_logical;
549   unsigned char default_drvbuffer;  /* 0xff = don't touch, value 3 bits */
550   int write_threshold;
551   int timeout;                  /* timeout for normal commands */
552   int long_timeout;             /* timeout for commands known to take long time*/
553 
554   /* Mode characteristics */
555   ST_mode modes[ST_NBR_MODES];
556   int current_mode;
557 #ifdef CONFIG_DEVFS_FS
558   devfs_handle_t de_r[ST_NBR_MODES];  /*  Rewind entries     */
559   devfs_handle_t de_n[ST_NBR_MODES];  /*  No-rewind entries  */
560 #endif
561 
562   /* Status variables */
563   int partition;
564   int new_partition;
565   int nbr_partitions;    /* zero until partition support enabled */
566   ST_partstat ps[ST_NBR_PARTITIONS];
567   unsigned char dirty;
568   unsigned char ready;
569   unsigned char write_prot;
570   unsigned char drv_write_prot;
571   unsigned char in_use;
572   unsigned char blksize_changed;
573   unsigned char density_changed;
574   unsigned char compression_changed;
575   unsigned char drv_buffer;
576   unsigned char density;
577   unsigned char door_locked;
578   unsigned char rew_at_close;
579   unsigned char inited;
580   int block_size;
581   int min_block;
582   int max_block;
583   int recover_count;            /* from tape opening */
584   int recover_erreg;            /* from last status call */
585   /*
586    * OnStream specific data
587    */
588   int      os_fw_rev;                          /* the firmware revision * 10000 */
589   unsigned char  raw;                          /* flag OnStream raw access (32.5KB block size) */
590   unsigned char  poll;                         /* flag that this drive needs polling (IDE|firmware) */
591   unsigned char  logical_blk_in_buffer;        /* flag that the block as per logical_blk_num
592                                                 * has been read into STp->buffer and is valid */
593   int      logical_blk_num;                    /* logical block number */
594   unsigned first_frame_position;               /* physical frame to be transfered to/from host */
595   unsigned last_frame_position;                /* physical frame to be transferd to/from tape */
596   int      cur_frames;                         /* current number of frames in internal buffer */
597   int      max_frames;                         /* max number of frames in internal buffer */
598   char     application_sig[5];                 /* application signature */
599   unsigned char  fast_open;                    /* flag that reminds us we didn't check headers at open */
600   unsigned short wrt_pass_cntr;                /* write pass counter */
601   int      update_frame_cntr;                  /* update frame counter */
602   int      onstream_write_error;               /* write error recovery active */
603   int      header_ok;                          /* header frame verified ok */
604   int      linux_media;                        /* reading linux-specifc media */
605   int      linux_media_version;
606   os_header_t * header_cache;                  /* cache is kept for filemark positions */
607   int      filemark_cnt;
608   int      first_mark_ppos;
609   int      last_mark_ppos;
610   int      first_data_ppos;
611   int      eod_frame_ppos;
612   int      eod_frame_lfa;
613   int      write_type;                          /* used in write error recovery */
614   int      read_error_frame;                    /* used in read error recovery */
615   unsigned long cmd_start_time;
616   unsigned long max_cmd_time;
617 
618 #if DEBUG
619   unsigned char write_pending;
620   int nbr_finished;
621   int nbr_waits;
622   unsigned char last_cmnd[6];
623   unsigned char last_sense[16];
624 #endif
625 } OS_Scsi_Tape;
626 
627 /* Values of write_type */
628 #define OS_WRITE_DATA      0
629 #define OS_WRITE_EOD       1
630 #define OS_WRITE_NEW_MARK  2
631 #define OS_WRITE_LAST_MARK 3
632 #define OS_WRITE_HEADER    4
633 #define OS_WRITE_FILLER    5
634 
635 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.