home *** CD-ROM | disk | FTP | other *** search
- /*
- * A clist structure is the head
- * of a linked list queue of characters.
- * The characters are stored in 4-word
- * blocks containing a link and several characters.
- * The routines getc and putc
- * manipulate these structures.
- */
- struct clist
- {
- int c_cc; /* character count */
- char *c_cf; /* pointer to first char */
- char *c_cl; /* pointer to last char */
- };
-
- /*
- * A tty structure is needed for
- * each UNIX character device that
- * is used for normal terminal IO.
- * The routines in tty.c handle the
- * common code associated with
- * these structures.
- * The definition and device dependent
- * code is in each driver. (kl.c dc.c dh.c)
- */
-
- struct tc {
- char t_intrc; /* interrupt */
- char t_quitc; /* quit */
- char t_startc; /* start output */
- char t_stopc; /* stop output */
- char t_eofc; /* end-of-file */
- char t_brkc; /* input delimiter (like nl) */
- };
-
- struct tty
- {
- struct clist t_rawq; /* input chars right off device */
- struct clist t_canq; /* input chars after erase and kill */
- struct clist t_outq; /* output list to device */
- int (* t_oproc)(); /* routine to start output */
- int (* t_iproc)(); /* routine to start input */
- struct chan *t_chan; /* destination channel */
- caddr_t t_linep; /* aux line discipline pointer */
- caddr_t t_addr; /* device address */
- dev_t t_dev; /* device number */
- short t_flags; /* mode, settable by ioctl call */
- short t_state; /* internal state, not visible externally */
- short t_pgrp; /* process group name */
- char t_delct; /* number of delimiters in raw q */
- char t_line; /* line discipline */
- char t_col; /* printing column of device */
- char t_erase; /* erase character */
- char t_kill; /* kill character */
- char t_char; /* character temporary */
- char t_ispeed; /* input speed */
- char t_ospeed; /* output speed */
- union {
- struct tc;
- struct clist t_ctlq;
- } t_un;
- };
-
- #define tun tp->t_un
-
- /*
- * structure of arg for ioctl
- */
- struct ttiocb {
- char ioc_ispeed;
- char ioc_ospeed;
- char ioc_erase;
- char ioc_kill;
- int ioc_flags;
- };
-
- #define TTIPRI 28
- #define TTOPRI 29
-
- #define CERASE '#' /* default special characters */
- #define CEOT 004
- #define CKILL '@'
- #define CQUIT 034 /* FS, cntl shift L */
- #define CINTR 0177 /* DEL */
- #define CSTOP 023 /* Stop output: ctl-s */
- #define CSTART 021 /* Start output: ctl-q */
- #define CBRK 0377
-
- /* limits */
- #define TTHIWAT 100
- #define TTLOWAT 50
- #define TTYHOG 256
-
- /* modes */
- #define TANDEM 01
- #define CBREAK 02
- #define LCASE 04
- #define ECHO 010
- #define CRMOD 020
- #define RAW 040
- #define ODDP 0100
- #define EVENP 0200
- #define NLDELAY 001400
- #define TBDELAY 006000
- #define XTABS 006000
- #define CRDELAY 030000
- #define VTDELAY 040000
-
- /* Hardware bits */
- #define DONE 0200
- #define IENABLE 0100
-
- /* Internal state bits */
- #define TIMEOUT 01 /* Delay timeout in progress */
- #define WOPEN 02 /* Waiting for open to complete */
- #define ISOPEN 04 /* Device is open */
- #define FLUSH 010 /* outq has been flushed during DMA */
- #define CARR_ON 020 /* Software copy of carrier-present */
- #define BUSY 040 /* Output in progress */
- #define ASLEEP 0100 /* Wakeup when output done */
- #define XCLUDE 0200 /* exclusive-use flag against open */
- #define TTSTOP 0400 /* Output stopped by ctl-s */
- #define HUPCLS 01000 /* Hang up upon last close */
- #define TBLOCK 02000 /* tandem queue blocked */
- #define DKCMD 04000 /* datakit command channel */
- #define DKMPX 010000 /* datakit user-multiplexed mode */
- #define DKCALL 020000 /* datakit dial mode */
- #define DKLINGR 040000 /* datakit lingering close mode */
- #define CNTLQ 0100000 /* interpret t_un as clist */
-
- /*
- * tty ioctl commands
- */
- #define TIOCGETD (('t'<<8)|0)
- #define TIOCSETD (('t'<<8)|1)
- #define TIOCHPCL (('t'<<8)|2)
- #define TIOCMODG (('t'<<8)|3)
- #define TIOCMODS (('t'<<8)|4)
- #define TIOCGETP (('t'<<8)|8)
- #define TIOCSETP (('t'<<8)|9)
- #define TIOCSETN (('t'<<8)|10)
- #define TIOCEXCL (('t'<<8)|13)
- #define TIOCNXCL (('t'<<8)|14)
- #define TIOCFLUSH (('t'<<8)|16)
- #define TIOCSETC (('t'<<8)|17)
- #define TIOCGETC (('t'<<8)|18)
- #define DIOCLSTN (('d'<<8)|1)
- #define DIOCNTRL (('d'<<8)|2)
- #define DIOCMPX (('d'<<8)|3)
- #define DIOCNMPX (('d'<<8)|4)
- #define DIOCSCALL (('d'<<8)|5)
- #define DIOCRCALL (('d'<<8)|6)
- #define DIOCPGRP (('d'<<8)|7)
- #define DIOCGETP (('d'<<8)|8)
- #define DIOCSETP (('d'<<8)|9)
- #define DIOCLOSE (('d'<<8)|10)
- #define DIOCTIME (('d'<<8)|11)
- #define DIOCRESET (('d'<<8)|12)
- #define FIOCLEX (('f'<<8)|1)
- #define FIONCLEX (('f'<<8)|2)
- #define MXLSTN (('x'<<8)|1)
- #define MXNBLK (('x'<<8)|2)
-