Annotation of 43BSDTahoe/sys/h/tty.h, revision 1.1.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.