~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Minix Cross Reference
Minix/kernel/tty.h


  1 /*      tty.h - Terminals       */
  2 
  3 #define TTY_IN_BYTES     256    /* tty input queue size */
  4 #define TAB_SIZE           8    /* distance between tab stops */
  5 #define TAB_MASK           7    /* mask to compute a tab stop position */
  6 
  7 #define ESC             '\33'   /* escape */
  8 
  9 #define O_NOCTTY       00400    /* from <fcntl.h>, or cc will choke */
 10 #define O_NONBLOCK     04000
 11 
 12 typedef _PROTOTYPE( void (*devfun_t), (struct tty *tp) );
 13 typedef _PROTOTYPE( void (*devfunarg_t), (struct tty *tp, int c) );
 14 
 15 typedef struct tty {
 16   int tty_events;               /* set when TTY should inspect this line */
 17 
 18   /* Input queue.  Typed characters are stored here until read by a program. */
 19   u16_t *tty_inhead;            /* pointer to place where next char goes */
 20   u16_t *tty_intail;            /* pointer to next char to be given to prog */
 21   int tty_incount;              /* # chars in the input queue */
 22   int tty_eotct;                /* number of "line breaks" in input queue */
 23   devfun_t tty_devread;         /* routine to read from low level buffers */
 24   devfun_t tty_icancel;         /* cancel any device input */
 25   int tty_min;                  /* minimum requested #chars in input queue */
 26   clock_t tty_time;             /* time when the input is available */
 27   struct tty *tty_timenext;     /* for a list of ttys with active timers */
 28 
 29   /* Output section. */
 30   devfun_t tty_devwrite;        /* routine to start actual device output */
 31   devfunarg_t tty_echo;         /* routine to echo characters input */
 32   devfun_t tty_ocancel;         /* cancel any ongoing device output */
 33   devfun_t tty_break;           /* let the device send a break */
 34 
 35   /* Terminal parameters and status. */
 36   int tty_position;             /* current position on the screen for echoing */
 37   char tty_reprint;             /* 1 when echoed input messed up, else 0 */
 38   char tty_escaped;             /* 1 when LNEXT (^V) just seen, else 0 */
 39   char tty_inhibited;           /* 1 when STOP (^S) just seen (stops output) */
 40   char tty_pgrp;                /* slot number of controlling process */
 41   char tty_openct;              /* count of number of opens of this tty */
 42 
 43   /* Information about incomplete I/O requests is stored here. */
 44   char tty_inrepcode;           /* reply code, TASK_REPLY or REVIVE */
 45   char tty_incaller;            /* process that made the call (usually FS) */
 46   char tty_inproc;              /* process that wants to read from tty */
 47   vir_bytes tty_in_vir;         /* virtual address where data is to go */
 48   int tty_inleft;               /* how many chars are still needed */
 49   int tty_incum;                /* # chars input so far */
 50   char tty_outrepcode;          /* reply code, TASK_REPLY or REVIVE */
 51   char tty_outcaller;           /* process that made the call (usually FS) */
 52   char tty_outproc;             /* process that wants to write to tty */
 53   vir_bytes tty_out_vir;        /* virtual address where data comes from */
 54   int tty_outleft;              /* # chars yet to be output */
 55   int tty_outcum;               /* # chars output so far */
 56   char tty_iocaller;            /* process that made the call (usually FS) */
 57   char tty_ioproc;              /* process that wants to do an ioctl */
 58   int tty_ioreq;                /* ioctl request code */
 59   vir_bytes tty_iovir;          /* virtual address of ioctl buffer */
 60 
 61   /* Miscellaneous. */
 62   devfun_t tty_ioctl;           /* set line speed, etc. at the device level */
 63   devfun_t tty_close;           /* tell the device that the tty is closed */
 64   void *tty_priv;               /* pointer to per device private data */
 65   struct termios tty_termios;   /* terminal attributes */
 66   struct winsize tty_winsize;   /* window size (#lines and #columns) */
 67 
 68   u16_t tty_inbuf[TTY_IN_BYTES];/* tty input buffer */
 69 } tty_t;
 70 
 71 EXTERN tty_t tty_table[NR_CONS+NR_RS_LINES+NR_PTYS];
 72 #define tty_line(tp)       ((tp) - tty_table)   /* return line num from tp */
 73 
 74 /* Values for the fields. */
 75 #define NOT_ESCAPED        0    /* previous character is not LNEXT (^V) */
 76 #define ESCAPED            1    /* previous character was LNEXT (^V) */
 77 #define RUNNING            0    /* no STOP (^S) has been typed to stop output */
 78 #define STOPPED            1    /* STOP (^S) has been typed to stop output */
 79 
 80 /* Fields and flags on characters in the input queue. */
 81 #define IN_CHAR       0x00FF    /* low 8 bits are the character itself */
 82 #define IN_LEN        0x0F00    /* length of char if it has been echoed */
 83 #define IN_LSHIFT          8    /* length = (c & IN_LEN) >> IN_LSHIFT */
 84 #define IN_EOT        0x1000    /* char is a line break (^D, LF) */
 85 #define IN_EOF        0x2000    /* char is EOF (^D), do not return to user */
 86 #define IN_ESC        0x4000    /* escaped by LNEXT (^V), no interpretation */
 87 
 88 /* Times and timeouts. */
 89 #define TIME_NEVER      ((clock_t) -1 < 0 ? (clock_t) LONG_MAX : (clock_t) -1)
 90 #define force_timeout() ((void) (tty_timeout = 0))
 91 
 92 EXTERN tty_t *tty_timelist;     /* list of ttys with active timers */
 93 
 94 /* Number of elements and limit of a buffer. */
 95 #define buflen(buf)     (sizeof(buf) / sizeof((buf)[0]))
 96 #define bufend(buf)     ((buf) + buflen(buf))
 97 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.