From 57ad96137c709d451daac70d0b08ecdd34417337 Mon Sep 17 00:00:00 2001 From: pumnflqv2 Date: Tue, 5 Jul 2022 04:31:44 +0800 Subject: [PATCH] ADD file via upload --- 0/linux/include/linux/tty.h | 110 ++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 0/linux/include/linux/tty.h diff --git a/0/linux/include/linux/tty.h b/0/linux/include/linux/tty.h new file mode 100644 index 0000000..fb4a2be --- /dev/null +++ b/0/linux/include/linux/tty.h @@ -0,0 +1,110 @@ +/* + * 'tty.h' defines some structures used by tty_io.c and some defines. + * + * NOTE! Don't touch this without checking that nothing in rs_io.s or + * con_io.s breaks. Some constants are hardwired into the system (mainly + * offsets into 'tty_queue' + */ + +#ifndef _TTY_H +#define _TTY_H + +#include + +#define TTY_BUF_SIZE 1024 + +struct tty_queue { + unsigned long data; + unsigned long head; + unsigned long tail; + struct task_struct * proc_list; + char buf[TTY_BUF_SIZE]; +}; + +#define INC(a) ((a) = ((a)+1) & (TTY_BUF_SIZE-1)) +#define DEC(a) ((a) = ((a)-1) & (TTY_BUF_SIZE-1)) +#define EMPTY(a) ((a).head == (a).tail) +#define LEFT(a) (((a).tail-(a).head-1)&(TTY_BUF_SIZE-1)) +#define LAST(a) ((a).buf[(TTY_BUF_SIZE-1)&((a).head-1)]) +#define FULL(a) (!LEFT(a)) +#define CHARS(a) (((a).head-(a).tail)&(TTY_BUF_SIZE-1)) +#define GETCH(queue,c) \ +(void)({c=(queue).buf[(queue).tail];INC((queue).tail);}) +#define PUTCH(c,queue) \ +(void)({(queue).buf[(queue).head]=(c);INC((queue).head);}) + +#define INTR_CHAR(tty) ((tty)->termios.c_cc[VINTR]) +#define QUIT_CHAR(tty) ((tty)->termios.c_cc[VQUIT]) +#define ERASE_CHAR(tty) ((tty)->termios.c_cc[VERASE]) +#define KILL_CHAR(tty) ((tty)->termios.c_cc[VKILL]) +#define EOF_CHAR(tty) ((tty)->termios.c_cc[VEOF]) +#define START_CHAR(tty) ((tty)->termios.c_cc[VSTART]) +#define STOP_CHAR(tty) ((tty)->termios.c_cc[VSTOP]) +#define SUSPEND_CHAR(tty) ((tty)->termios.c_cc[VSUSP]) + +struct tty_struct { + struct termios termios; + int pgrp; + int stopped; + void (*write)(struct tty_struct * tty); + struct tty_queue read_q; + struct tty_queue write_q; + struct tty_queue secondary; + }; + +extern struct tty_struct tty_table[]; + +/* intr=^C quit=^| erase=del kill=^U + eof=^D vtime=\0 vmin=\1 sxtc=\0 + start=^Q stop=^S susp=^Z eol=\0 + reprint=^R discard=^U werase=^W lnext=^V + eol2=\0 +*/ +#define INIT_C_CC "\003\034\177\025\004\0\1\0\021\023\032\0\022\017\027\026\0" +void rs_init(void); +void con_init(void); +void tty_init(void); + +int tty_read(unsigned c, char * buf, int n); +int tty_write(unsigned c, char * buf, int n); + +void rs_write(struct tty_struct * tty); +void con_write(struct tty_struct * tty); + +void copy_to_cooked(struct tty_struct * tty); + +//.......................................................... +#define MSG_MOUSE_CLICK 1 +#define MSG_TIME 2 +#define vga_graph_memstart 0xA0000 +#define vga_graph_memsize 64000 +#define cursor_side 6 +#define vga_width 320 +#define vga_height 200 +typedef struct{ + unsigned char mid; //消息的id + int pid; //消息的目标进程ID,当前进程设为-1 + struct message *next; //消息队列 +}message; + +typedef struct{ + long jiffies; + int type; //类型1表示只定义了一次闹钟,0表示定义了无数次闹钟 + long init_jiffies; + int pid; //哪个进程创建的定时器 + struct user_timer *next; +}user_timer; + +typedef struct OB{ + unsigned char posx; //对象左上角的x坐标 + unsigned char posy; //对象左上角的y坐标 + unsigned char width; //对象宽度 + unsigned char height; //对象高度 + unsigned char color; //对象颜色 +}object; + +extern void post_message(message *msg); +extern message *message_head; +extern message *message_tail; +extern user_timer *timer_head; +#endif