Annotation of researchv9/jerq/include/sys/xt.h, revision 1.1.1.1

1.1       root        1: /*
                      2:        @(#)  xt.h  version 2.1 (Blit) of 7/20/83 15:43:45
                      3:        Last Delta:  7/10/83 19:08:10 to /usr/jerq/sccs/src/xt/uts/sys/s.xt.h
                      4: */
                      5: 
                      6: /*
                      7: **     Multiplexed channels driver header
                      8: */
                      9: 
                     10: #define        XTRACE          1               /* 1 to include tracing */
                     11: #define        XTSTATS         1               /* 1 to enable statistics */
                     12: #define        XTDATA          1               /* 1 to enable Link table extraction */
                     13: 
                     14: #define        MAXLINKS        32
                     15: #define        CHAN(dev)       (dev&CHANMASK)
                     16: #define        LINK(dev)       ((dev>>CHANBITS)&(0xff>>CHANBITS))
                     17: 
                     18: #if    (MAXPCHAN*MAXLINKS) > 256
                     19:        ERROR -- product cannot be greater than minor(dev)
                     20: #endif
                     21: 
                     22: #if    XTRACE == 1
                     23: #define        PKTPTSZ         8                       /* Packet part to be captured for trace */
                     24: #define        PKTHIST         40                      /* Size of trace history */
                     25: 
                     26: struct Tpkt
                     27: {
                     28:        Pbyte           pktpart[PKTPTSZ-1];     /* Record of a packet captured */
                     29:        Pbyte           flag;                   /* Direction */
                     30:        time_t          time;                   /* Log time in ticks */
                     31: };
                     32: 
                     33: #define        XMITLOG         0                       /* Transmitted packet */
                     34: #define        RECVLOG         1                       /* Received packet */
                     35: 
                     36: struct Tbuf
                     37: {
                     38:        struct Tpkt     log[PKTHIST];           /* A history of transactions */
                     39:        short           flags;                  /* Flags */
                     40:        char            index;                  /* Next slot */
                     41:        char            used;                   /* Number of slots used */
                     42: };
                     43: 
                     44: #define        TRACEON         1                       /* Trace enabled */
                     45: #define        TRACELOCK       2                       /* Trace locked */
                     46: 
                     47: static void    logpkt();
                     48: #define                Logpkt(A,B,C)   if(((B)->l.trace.flags&(TRACEON|TRACELOCK))==TRACEON)logpkt(A,B,C)
                     49: #define                LOCKTRACE(A)    (A)->l.trace.flags|=TRACELOCK
                     50: #else
                     51: #define                Logpkt(A,B,C)
                     52: #define                LOCKTRACE(A)
                     53: #endif
                     54: 
                     55: #if    XTSTATS == 1
                     56: enum stats_t
                     57: {
                     58:         xpkts, rpkts, crcerr, badack, badnak, outseq
                     59:        ,nakretrys, rdup, rnak, xnak, rack, xack
                     60:        ,badhdr, badsize, lostack, badcntl, badcdata
                     61:        ,nocfree, badcount, badchan, badctype, norbuf
                     62:        ,rtimo, xtimo
                     63:        ,wiow, woas
                     64:        ,nstats
                     65: };
                     66: 
                     67: #define        S_XPKTS         (int)xpkts
                     68: #define        S_RPKTS         (int)rpkts
                     69: #define        S_CRCERR        (int)crcerr
                     70: #define        S_BADACK        (int)badack
                     71: #define        S_BADNAK        (int)badnak
                     72: #define        S_OUTSEQ        (int)outseq
                     73: #define        S_NAKRETRYS     (int)nakretrys
                     74: #define        S_RDUP          (int)rdup
                     75: #define        S_RNAK          (int)rnak
                     76: #define        S_XNAK          (int)xnak
                     77: #define        S_RACK          (int)rack
                     78: #define        S_XACK          (int)xack
                     79: #define        S_BADHDR        (int)badhdr
                     80: #define        S_BADSIZE       (int)badsize
                     81: #define        S_LOSTACK       (int)lostack
                     82: #define        S_BADCNTL       (int)badcntl
                     83: #define        S_BADCDATA      (int)badcdata
                     84: #define        S_NOCFREE       (int)nocfree
                     85: #define        S_BADCOUNT      (int)badcount
                     86: #define        S_BADCHAN       (int)badchan
                     87: #define        S_BADCTYPE      (int)badctype
                     88: #define        S_NORBUF        (int)norbuf
                     89: #define        S_RTIMO         (int)rtimo
                     90: #define        S_XTIMO         (int)xtimo
                     91: #define        S_WIOW          (int)wiow
                     92: #define        S_WOAS          (int)woas
                     93: #define        S_NSTATS        (int)nstats
                     94: 
                     95: typedef long           Stats_t;
                     96: 
                     97: #define        STATS(A,B)      (A)->l.stats[B]++
                     98: #else
                     99: #define        STATS(A,B)
                    100: #endif
                    101: 
                    102: struct Channel
                    103: {
                    104:        struct Pchannel chan;           /* Protocol state information for this channel */
                    105:        struct tty      tty;            /* Virtual tty for this channel */
                    106:        struct jwinsize winsize;        /* Layer parameters for JWINSIZE ioctl */
                    107: };
                    108: 
                    109: typedef struct Channel *Ch_p;
                    110: 
                    111: /*
                    112: **     JAGENT ioctl structure
                    113: */
                    114: struct hagent
                    115: {
                    116:        struct bagent desc;     /* WARNING!! this better be 12 bytes long!!!
                    117:                                        defined in jioctl.h */
                    118:        struct cblock *retcb;           /* returning cblock from rcvpkt */
                    119:        short flag;                     /* flag to synchronise ioctl's */
                    120: };
                    121: 
                    122: /* flags for hagent struct */
                    123: #define        AGASLP  01
                    124: #define        AGBUSY  02
                    125: 
                    126: struct Linkinfo
                    127: {
                    128:        struct tty *    line;           /* Real tty for this link */
                    129:        char *          rdatap;         /* Pointer into rpkt */
                    130:        struct Pktstate rpkt;           /* Packet being received for this link */
                    131:        short           lihiwat;        /* High water mark for real line */
                    132:        short           xtimo;          /* Transmission timeout */
                    133:        char            rtimo;          /* Receive timeout */
                    134:        char            old;            /* Old line discipline for line */
                    135:        char            nchans;         /* Number of channels allowed */
                    136:        char            lchan;          /* Last channel started */
                    137:        char            open;           /* Channel open bits */
                    138:        char            xopen;          /* Exclusive open bits */
                    139:        struct hagent   agent;          /* ioctl agent structure */
                    140:        short           pid;            /* real channel control process */
                    141: #if    XTRACE == 1
                    142:        struct Tbuf     trace;          /* Tracks */
                    143: #endif
                    144: #if    XTSTATS == 1
                    145:        Stats_t         stats[S_NSTATS];/* Statistics */
                    146: #endif
                    147: };
                    148: 
                    149: struct Link
                    150: {
                    151:        struct Linkinfo l;              /* Link info */
                    152:        struct Channel  chans[1];       /* Array of channels for this link */
                    153: };
                    154: 
                    155: typedef        struct Link *   Link_p;
                    156: extern Link_p          linkTable[MAXLINKS];
                    157: 
                    158: /*
                    159: **     Ioctl args
                    160: */
                    161: 
                    162: #define        XTIOCTYPE       ('b'<<8)
                    163: #define        XTIOCLINK       (XTIOCTYPE|1)
                    164: #define        XTIOCSTATS      (XTIOCTYPE|2)
                    165: #define        XTIOCTRACE      (XTIOCTYPE|3)
                    166: #define        XTIOCNOTRACE    (XTIOCTYPE|4)
                    167: #define        XTIOCDATA       (XTIOCTYPE|5)
                    168: 
                    169: /** Link set up request **/
                    170: 
                    171: struct xtioclm
                    172: {
                    173:        char            fd;             /* File descriptor for 'real' 'tty' line */
                    174:        char            nchans;         /* Maximum channels that will be used */
                    175: };
                    176: 
                    177: /** Data descriptor **/
                    178: 
                    179: struct xtiocdd
                    180: {
                    181:        int             size;           /* Sizeof buffer */
                    182:        char *          addr;           /* Address of buffer */
                    183: };
                    184: 
                    185: #define        PCHANMATCH(tp)  ((Pch_p)(tp)-1)
                    186: #define        LINKMATCH(p)    linkTable[(p)->link]
                    187: #define        t_link          t_dstat         /* Use dstat in real tty for linknumber */

unix.superglobalmegacorp.com

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