Annotation of 42BSD/sys/h/tty.h, revision 1.1

1.1     ! root        1: /*     tty.h   6.1     83/07/29        */
        !             2: 
        !             3: #ifdef KERNEL
        !             4: #include "../h/ttychars.h"
        !             5: #include "../h/ttydev.h"
        !             6: #else
        !             7: #include <sys/ttychars.h>
        !             8: #include <sys/ttydev.h>
        !             9: #endif
        !            10: 
        !            11: /*
        !            12:  * A clist structure is the head of a linked list queue
        !            13:  * of characters.  The characters are stored in blocks
        !            14:  * containing a link and CBSIZE (param.h) characters. 
        !            15:  * The routines in tty_subr.c manipulate these structures.
        !            16:  */
        !            17: struct clist {
        !            18:        int     c_cc;           /* character count */
        !            19:        char    *c_cf;          /* pointer to first char */
        !            20:        char    *c_cl;          /* pointer to last char */
        !            21: };
        !            22: 
        !            23: /*
        !            24:  * Per-tty structure.
        !            25:  *
        !            26:  * Should be split in two, into device and tty drivers.
        !            27:  * Glue could be masks of what to echo and circular buffer
        !            28:  * (low, high, timeout).
        !            29:  */
        !            30: struct tty {
        !            31:        union {
        !            32:                struct {
        !            33:                        struct  clist T_rawq;
        !            34:                        struct  clist T_canq;
        !            35:                } t_t;
        !            36: #define        t_rawq  t_nu.t_t.T_rawq         /* raw characters or partial line */
        !            37: #define        t_canq  t_nu.t_t.T_canq         /* raw characters or partial line */
        !            38:                struct {
        !            39:                        struct  buf *T_bufp;
        !            40:                        char    *T_cp;
        !            41:                        int     T_inbuf;
        !            42:                        int     T_rec;
        !            43:                } t_n;
        !            44: #define        t_bufp  t_nu.t_n.T_bufp         /* buffer allocated to protocol */
        !            45: #define        t_cp    t_nu.t_n.T_cp           /* pointer into the ripped off buffer */
        !            46: #define        t_inbuf t_nu.t_n.T_inbuf        /* number chars in the buffer */
        !            47: #define        t_rec   t_nu.t_n.T_rec          /* have a complete record */
        !            48:        } t_nu;
        !            49:        struct  clist t_outq;           /* device */
        !            50:        int     (*t_oproc)();           /* device */
        !            51:        struct  proc *t_rsel;           /* tty */
        !            52:        struct  proc *t_wsel;
        !            53:                                caddr_t T_LINEP;        /* ### */
        !            54:        caddr_t t_addr;                 /* ??? */
        !            55:        dev_t   t_dev;                  /* device */
        !            56:        int     t_flags;                /* some of both */
        !            57:        int     t_state;                /* some of both */
        !            58:        short   t_pgrp;                 /* tty */
        !            59:        char    t_delct;                /* tty */
        !            60:        char    t_line;                 /* glue */
        !            61:        char    t_col;                  /* tty */
        !            62:        char    t_ispeed, t_ospeed;     /* device */
        !            63:        char    t_rocount, t_rocol;     /* tty */
        !            64:        struct  ttychars t_chars;       /* tty */
        !            65: /* be careful of tchars & co. */
        !            66: #define        t_erase         t_chars.tc_erase
        !            67: #define        t_kill          t_chars.tc_kill
        !            68: #define        t_intrc         t_chars.tc_intrc
        !            69: #define        t_quitc         t_chars.tc_quitc
        !            70: #define        t_startc        t_chars.tc_startc
        !            71: #define        t_stopc         t_chars.tc_stopc
        !            72: #define        t_eofc          t_chars.tc_eofc
        !            73: #define        t_brkc          t_chars.tc_brkc
        !            74: #define        t_suspc         t_chars.tc_suspc
        !            75: #define        t_dsuspc        t_chars.tc_dsuspc
        !            76: #define        t_rprntc        t_chars.tc_rprntc
        !            77: #define        t_flushc        t_chars.tc_flushc
        !            78: #define        t_werasc        t_chars.tc_werasc
        !            79: #define        t_lnextc        t_chars.tc_lnextc
        !            80: };
        !            81: 
        !            82: #define        TTIPRI  28
        !            83: #define        TTOPRI  29
        !            84: 
        !            85: /* limits */
        !            86: #define        NSPEEDS 16
        !            87: #define        TTMASK  15
        !            88: #define        OBUFSIZ 100
        !            89: #define        TTYHOG  255
        !            90: #ifdef KERNEL
        !            91: short  tthiwat[NSPEEDS], ttlowat[NSPEEDS];
        !            92: #define        TTHIWAT(tp)     tthiwat[(tp)->t_ospeed&TTMASK]
        !            93: #define        TTLOWAT(tp)     ttlowat[(tp)->t_ospeed&TTMASK]
        !            94: extern struct ttychars ttydefaults;
        !            95: #endif
        !            96: 
        !            97: /* internal state bits */
        !            98: #define        TS_TIMEOUT      0x000001        /* delay timeout in progress */
        !            99: #define        TS_WOPEN        0x000002        /* waiting for open to complete */
        !           100: #define        TS_ISOPEN       0x000004        /* device is open */
        !           101: #define        TS_FLUSH        0x000008        /* outq has been flushed during DMA */
        !           102: #define        TS_CARR_ON      0x000010        /* software copy of carrier-present */
        !           103: #define        TS_BUSY         0x000020        /* output in progress */
        !           104: #define        TS_ASLEEP       0x000040        /* wakeup when output done */
        !           105: #define        TS_XCLUDE       0x000080        /* exclusive-use flag against open */
        !           106: #define        TS_TTSTOP       0x000100        /* output stopped by ctl-s */
        !           107: #define        TS_HUPCLS       0x000200        /* hang up upon last close */
        !           108: #define        TS_TBLOCK       0x000400        /* tandem queue blocked */
        !           109: #define        TS_RCOLL        0x000800        /* collision in read select */
        !           110: #define        TS_WCOLL        0x001000        /* collision in write select */
        !           111: #define        TS_NBIO         0x002000        /* tty in non-blocking mode */
        !           112: #define        TS_ASYNC        0x004000        /* tty in async i/o mode */
        !           113: /* state for intra-line fancy editing work */
        !           114: #define        TS_BKSL         0x010000        /* state for lowercase \ work */
        !           115: #define        TS_QUOT         0x020000        /* last character input was \ */
        !           116: #define        TS_ERASE        0x040000        /* within a \.../ for PRTRUB */
        !           117: #define        TS_LNCH         0x080000        /* next character is literal */
        !           118: #define        TS_TYPEN        0x100000        /* retyping suspended input (PENDIN) */
        !           119: #define        TS_CNTTB        0x200000        /* counting tab width; leave FLUSHO alone */
        !           120: 
        !           121: #define        TS_LOCAL        (TS_BKSL|TS_QUOT|TS_ERASE|TS_LNCH|TS_TYPEN|TS_CNTTB)
        !           122: 
        !           123: /* define partab character types */
        !           124: #define        ORDINARY        0
        !           125: #define        CONTROL         1
        !           126: #define        BACKSPACE       2
        !           127: #define        NEWLINE         3
        !           128: #define        TAB             4
        !           129: #define        VTAB            5
        !           130: #define        RETURN          6

unix.superglobalmegacorp.com

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