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

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