summaryrefslogtreecommitdiffstats
path: root/src/include/linux/tty.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/linux/tty.h')
-rw-r--r--src/include/linux/tty.h77
1 files changed, 77 insertions, 0 deletions
diff --git a/src/include/linux/tty.h b/src/include/linux/tty.h
new file mode 100644
index 0000000..ad846b3
--- /dev/null
+++ b/src/include/linux/tty.h
@@ -0,0 +1,77 @@
1/*
2 * 'tty.h' defines some structures used by tty_io.c and some defines.
3 *
4 * NOTE! Don't touch this without checking that nothing in rs_io.s or
5 * con_io.s breaks. Some constants are hardwired into the system (mainly
6 * offsets into 'tty_queue'
7 */
8
9#ifndef _TTY_H
10#define _TTY_H
11
12#include <termios.h>
13
14#define TTY_BUF_SIZE 1024
15
16struct tty_queue {
17 unsigned long data;
18 unsigned long head;
19 unsigned long tail;
20 struct task_struct * proc_list;
21 char buf[TTY_BUF_SIZE];
22};
23
24#define INC(a) ((a) = ((a)+1) & (TTY_BUF_SIZE-1))
25#define DEC(a) ((a) = ((a)-1) & (TTY_BUF_SIZE-1))
26#define EMPTY(a) ((a).head == (a).tail)
27#define LEFT(a) (((a).tail-(a).head-1)&(TTY_BUF_SIZE-1))
28#define LAST(a) ((a).buf[(TTY_BUF_SIZE-1)&((a).head-1)])
29#define FULL(a) (!LEFT(a))
30#define CHARS(a) (((a).head-(a).tail)&(TTY_BUF_SIZE-1))
31#define GETCH(queue,c) \
32(void)({c=(queue).buf[(queue).tail];INC((queue).tail);})
33#define PUTCH(c,queue) \
34(void)({(queue).buf[(queue).head]=(c);INC((queue).head);})
35
36#define INTR_CHAR(tty) ((tty)->termios.c_cc[VINTR])
37#define QUIT_CHAR(tty) ((tty)->termios.c_cc[VQUIT])
38#define ERASE_CHAR(tty) ((tty)->termios.c_cc[VERASE])
39#define KILL_CHAR(tty) ((tty)->termios.c_cc[VKILL])
40#define EOF_CHAR(tty) ((tty)->termios.c_cc[VEOF])
41#define START_CHAR(tty) ((tty)->termios.c_cc[VSTART])
42#define STOP_CHAR(tty) ((tty)->termios.c_cc[VSTOP])
43#define SUSPEND_CHAR(tty) ((tty)->termios.c_cc[VSUSP])
44
45struct tty_struct {
46 struct termios termios;
47 int pgrp;
48 int stopped;
49 void (*write)(struct tty_struct * tty);
50 struct tty_queue read_q;
51 struct tty_queue write_q;
52 struct tty_queue secondary;
53 };
54
55extern struct tty_struct tty_table[];
56
57/* intr=^C quit=^| erase=del kill=^U
58 eof=^D vtime=\0 vmin=\1 sxtc=\0
59 start=^Q stop=^S susp=^Z eol=\0
60 reprint=^R discard=^U werase=^W lnext=^V
61 eol2=\0
62*/
63#define INIT_C_CC "\003\034\177\025\004\0\1\0\021\023\032\0\022\017\027\026\0"
64
65void rs_init(void);
66void con_init(void);
67void tty_init(void);
68
69int tty_read(unsigned c, char * buf, int n);
70int tty_write(unsigned c, char * buf, int n);
71
72void rs_write(struct tty_struct * tty);
73void con_write(struct tty_struct * tty);
74
75void copy_to_cooked(struct tty_struct * tty);
76
77#endif