Annotation of researchv9/sys/boot/stand/ardef.h, revision 1.1.1.1

1.1       root        1: /*     @(#)ardef.h 1.1 86/02/03 SMI    */
                      2: 
                      3: /*
                      4:  * Copyright (c) 1984 by Sun Microsystems, Inc.
                      5:  */
                      6: 
                      7: /*
                      8:  * Standalone Driver for Archive Intelligent Streaming Tape
                      9:  * ardef.h 
                     10:  */
                     11: 
                     12: /*
                     13:  * Interesting tape commands
                     14:  */
                     15: #define AR_CLOSE       0       /* Close tape: WTM-if-writing, rewind */
                     16: #define AR_REWIND      1       /* Rewind (overlapped) */
                     17: #define AR_STATUS      2       /* Drive Status */
                     18: #define AR_READ                3       /* Read to MB memory */
                     19: #define AR_WRITE       4       /* Write to MB memory */
                     20: #define AR_WEOF                5       /* Write file mark (EOF) */ 
                     21: #define AR_ERASE       6       /* Erase entire tape */
                     22: #define AR_SELECT      7       /* Select drive of interest */
                     23: #define AR_DESELECT    8       /* Select no interesting drive */
                     24: #define AR_TENSE       9       /* Retension tape */
                     25: #define AR_SKIPFILE    10      /* Skip one file forward */
                     26: #define        AR_CMDOK        11      /* See if ok to do cmd */
                     27: 
                     28: /* 
                     29:  * States into which the tape drive can get.
                     30:  */
                     31: enum ARstates {
                     32:        FINstate = 0x00, IDLEstate, CMDstate,   /* Finished, Idle, Command  */
                     33:        WFMinit,                                /* Write File Mark */
                     34:        RFMinit,                                /* Read to File Mark */
                     35:        REWinit,                                /* Rewind tape */
                     36:        TENSEinit,                              /* Retension tape */
                     37:        ERASEinit,                              /* Erase tape */
                     38:        SELinit,                                /* Select a drive */
                     39:        DESELinit,                              /* Deselect all drives */
                     40:        RDSTinit,                               /* Read status */
                     41:        CLOSEinit,                              /* Deassert aronline */
                     42:        READinit, READcmd, READburst, READfin, READidle,        /* Read */
                     43:        WRinit, WRcmd,   WRburst,   WRfin,   WRidle,            /* Write */
                     44:        CMDOKinit,                              /* OK to issue commands? */
                     45: };
                     46: 
                     47: /*
                     48:  * Software state per tape controller.
                     49:  */
                     50: struct ar_softc {
                     51:        enum ARstates sc_state; /* Current state of hard/software */
                     52:        enum ARstates sc_oldstate;  /* Previous state of sc_state */
                     53:        struct arstatus sc_status; /* Status at last "Read status" cmd */
                     54:        int     sc_size;        /* Size of buffer to read/write */
                     55:        char    *sc_bufptr;     /* Pointer to buffer to read/write */
                     56:        char    sc_initted;     /* Is controller initialized yet? */
                     57:        char    sc_opened;      /* Is this drive open? */
                     58:        char    sc_lastiow;     /* last op was write */
                     59:        int     sc_count;       /* # times to repeat high-level op */
                     60:        u_char  sc_drive;       /* Drive # to select/deselect */
                     61:        u_char  sc_histate;     /* Higher level state than sc_state */
                     62:        struct ardevice *sc_addr;/* Address of I/O registers */
                     63:        u_char  sc_qidle;       /* =0 if buf in progress, =1 if not. */
                     64:        char    sc_eoflag;      /* raw eof flag */
                     65:        u_char  sc_cmdok;       /* 0 => can only issue read/RFM/write/WFM */
                     66:        char    sc_selecteddev; /* currently selected drive */
                     67: /* When adding new fields to ar_softc, also initialize them in arinit(). */
                     68: };

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.