Annotation of cci/sys/bsc/bsc.h, revision 1.1

1.1     ! root        1: /*     D.L.Buck and Associates, Inc. - %H%
        !             2:  *     %W% %Q% CCI
        !             3:  *
        !             4:  *     BISYNC Driver
        !             5:  *     ... header definitions for driver body
        !             6:  */
        !             7: 
        !             8: #define MXVIOC_B       4       /* Max BISYNC controllers can be supported */
        !             9:                                /* Can be 16 by reset this definition   */
        !            10: #define        NBSC    4               /* No of single-station/controller */
        !            11: #define        NBSM    4               /* No of multipoint station/controller */
        !            12: #define MX_NBSM MXVIOC_B*NBSM
        !            13: #define MX_NBSC MXVIOC_B*NBSC
        !            14: #define NBSSUB 16              /* Only allow 16 subdev/multipoint station */
        !            15: #define        LDISP   6
        !            16: #define        BSCPRI  TTIPRI          /* sleep priority for BISYNC driver */
        !            17: #define SSLOCK  0x80           /* lock for single station*/
        !            18: 
        !            19: struct xlist {                         /* Transmit list structure      */
        !            20:        short xnum;                     /* # bytes to send, and flags   */
        !            21:        char *xptr;                     /* Ptr to bytes to be sent      */
        !            22:        };
        !            23: 
        !            24: /* BSC Device Structure:                                               */
        !            25: struct bsc {
        !            26:        unsigned long  b_hlflgs;        /* general use flags */
        !            27:        char *b_rclptr;                 /* receive list */
        !            28:        char *b_rxcls;                  /* ptr to ebcdic/ascii char class tbl*/
        !            29:        char *b_rxdptr;                 /* ptr to data area in buffer */
        !            30:        char *b_rxhptr;                 /* ptr to hdr area in iocout */
        !            31:        short b_sema;                   /* Synchronization mechanism */
        !            32:        short b_lock;                   /* Lock on device */
        !            33:                                        /* if unused , zero*/
        !            34:                                        /* if locked for single station,*/
        !            35:                                        /* value will be the number of */
        !            36:                                        /* stations using this */
        !            37:        short b_bscto;                  /* timeout count */
        !            38:        short b_rxhcnt;                 /* count of header bytes */
        !            39:        short b_rxcnt;                  /* count of data bytes */
        !            40:        short b_tmperr;                 /* # temporary errors in psm */
        !            41:        short b_cntl;                   /* low-level control flags */
        !            42:        short b_rxst0;                  /* low-level rcv state */
        !            43:        short b_bsize;                  /* # bytes in buffer (to follow) */
        !            44:        char b_state;                   /* protocol machine state */
        !            45:        char b_nstate;                  /* state to follow end of send */
        !            46:        char b_class0;                  /* low-level rcv char type */
        !            47:        char b_class1;                  /* last frame type received */
        !            48:        char b_mode;                    /* current mode (see below) */
        !            49:        char b_trace;                   /* trace mode flag */
        !            50:        char b_psmbsy;                  /* psm busy flag */
        !            51:        char b_alarm;                   /* alarm clock */
        !            52:        char b_alenb;                   /* alarm enabled */
        !            53:        char b_crc[2];                  /* cyclic redundancy check */
        !            54:        short b_rdflag;                 /* if set, have read a block */
        !            55:        char *b_devregs;                /* ** system-specific device regs */
        !            56:        struct vxcmd *b_cmdbuf;         /* ** command buffer */
        !            57:        struct bscio b_iocin;           /* SET parameters from ioctl */
        !            58:        struct bscio b_iocout;          /* GET parameters for  ioctl */
        !            59:        char b_buffer[BSCMBLK];         /* bsc buffer */
        !            60:        struct xlist b_txlst[7];        /* Transmit list                */
        !            61:        struct xlist *b_txlptr;         /* Ptr to current b_txlst elem. */
        !            62: };
        !            63: 
        !            64: /* Structure definitions for station-specific data:                    */
        !            65: struct bscsub {
        !            66:        long  bs_flags;                 /* Flags: like hlflgs           */
        !            67:        char bs_mode;                   /* Mode: see below              */
        !            68:        char bs_err;                    /* Error indicator              */
        !            69:        short bs_size;                  /* Tx block size                */
        !            70:        short bs_rdflg;                 /* Station's rd timeout ctr     */
        !            71:        short bs_sema;                  /* Station's semaphore          */
        !            72:        char bs_buf[256];               /* Station's Tx buffer          */
        !            73: };
        !            74: 
        !            75: /* states: see bscpsm.c */
        !            76: 
        !            77: /* class0: see bscll.c */
        !            78: 
        !            79: /* class1: */
        !            80: 
        !            81: #define C_RTO  -1
        !            82: #define C_ENQ  0
        !            83: #define C_EOT  1
        !            84: #define C_NAK  2
        !            85: #define C_ETX  3
        !            86: #define C_ETB  4
        !            87: #define C_WAK  5
        !            88: #define C_RVI  6
        !            89: #define C_AK0  7
        !            90: #define C_AK1  8
        !            91: #define C_TTD  9
        !            92: #define        C_IUS   99              /* (not used) */
        !            93: #define        NC      10              /* # of frame types */
        !            94: 
        !            95: /* modes: */
        !            96: #define BSC_CLOSED     0       /* closed */
        !            97: #define BSC_INIT       1       /* never been used for reading or writing */
        !            98: #define BSC_IDLE       2       /* been used, but inactive at the moment */
        !            99: #define BSC_READ       3       /* in use now for reading */
        !           100: #define BSC_WRITE      4       /* in use now for writing */
        !           101: #define        BSC_CL1         5       /* closing - send disconnect */
        !           102: #define        BSC_CL2         6       /* disconnect sent */
        !           103: 
        !           104: /* driver bits in b_hlflgs: */
        !           105: #define BSC_SWAK       0x10000 /* send WACK */
        !           106: #define BSC_FULL       0x8000  /* buffer is presently full */
        !           107: #define BSC_XTRN       0x4000  /* send next block as transparent */
        !           108: #define BSC_XSOH       0x2000  /* send next block with leading SOH, not STX */
        !           109: #define BSC_XLAST      0x1000  /* next block is last to be sent - term. with ETX */
        !           110: #define BSC_ACK                0x0800  /* even/odd acknowledgement for next block */
        !           111: #define BSC_CRCERR     0x0400  /* received last block with crc error */
        !           112: #define        BSC_DSR         0x0200  /* present DSR status */
        !           113: #define        BSC_POLLWT      0x0100  /* Wait for Poll/Select */
        !           114: #define BSC_ERR                0x0080  /* error bit */
        !           115: /* remainder of bits defined in bscio.h */
        !           116: 
        !           117: /* semaphore definitions: */
        !           118: #define        BSC_DBUSY       1       /* Driver busy */
        !           119: #define        BSC_PBUSY       2       /* PSM busy */
        !           120: #define        BSC_DDONE       4       /* Driver done */
        !           121: #define        BSC_PDONE       8       /* PSM done */
        !           122: #define BSC_FACK       0x20    /* Fast ack mode for read->write */
        !           123: #define BSC_SEENBUF    0x10    /* Read buffer before fast ack */
        !           124: #define        BSC_NDLY        0x40    /* read-no-delay mode */
        !           125: #define        BSC_INPSM       0x80    /* PSM executing */
        !           126: 
        !           127: /* extra flags for xnum and b_cntl: */
        !           128: 
        !           129: #define        X_SHUT  0x8000  /* Shut down transmitter */
        !           130: #define        X_SYNC  0x4000  /* Send two sync characters */
        !           131: #define        X_CRC   0x2000  /* This block to have crc accumulated */
        !           132: #define        X_SKIP  0x1000  /* Skip crc accum on next character */
        !           133: #define        X_IUS   0x0800  /* IUS being sent (as well as crc) */
        !           134: #define        X_ACMCRC 0x100  /* Accumulate CRC on next byte */
        !           135: 
        !           136: struct state {         /* psm state table definition */
        !           137:        char s_type;            /* d: decision, e: error, f:function,
        !           138:                                 * r: receive,  s:send
        !           139:                                 */
        !           140:        unsigned char s_next;   /* next state ... d: unused, f: always used,
        !           141:                                 *                e, s: always used,
        !           142:                                 *                r: used in timeout
        !           143:                                 */
        !           144:        char s_ord;             /* r: ordinal of receive list,
        !           145:                                 * s: ordinal of send list;
        !           146:                                 * f,d: ordinal of function;
        !           147:                                 * e: ordinal of error
        !           148:                                 */
        !           149: };
        !           150: 
        !           151: #define EBCSYN         0x32            /* EBCDIC for SYNchronous idle */
        !           152: #define ASCSYN         0x16            /* ASCII  for SYNchronous idle */
        !           153: 
        !           154: /* multipoint mode codes */
        !           155: /* set for each individual station in bscsub.bs_mode*/
        !           156: 
        !           157: #define  BS_FREE   0
        !           158: #define  BS_IDLE   1
        !           159: #define  BS_READ   2
        !           160: #define  BS_WRITE  3
        !           161: 
        !           162: /* multipoint flag codes */
        !           163: /*set for each station in bscsub.bs_flags*/
        !           164: 
        !           165: #define  BS_ERR   0x0080
        !           166: #define  BS_FULL  0x8000
        !           167: #define  BS_LAST  0x1000

unix.superglobalmegacorp.com

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