about summary refs log tree commit diff stats
path: root/kernel.soso/termios.h
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2019-09-14 01:42:29 -0700
committerKartik Agaram <vc@akkartik.com>2019-09-14 01:45:55 -0700
commit46bb1d3157f9ad575c83a4bfa1e32b0d21bc8546 (patch)
tree28918f653d7cf970d33d5592047ef663289aca40 /kernel.soso/termios.h
parentded2b24ce28f4a9df75ce40117f0f06f09574369 (diff)
downloadmu-46bb1d3157f9ad575c83a4bfa1e32b0d21bc8546.tar.gz
5650 - support a second OS: soso
https://github.com/ozkl/soso

+ Much smaller than Linux; builds instantly
+ Supports graphics
- No network support
- Doesn't work on a cloud server (yet?)
Diffstat (limited to 'kernel.soso/termios.h')
-rw-r--r--kernel.soso/termios.h192
1 files changed, 192 insertions, 0 deletions
diff --git a/kernel.soso/termios.h b/kernel.soso/termios.h
new file mode 100644
index 00000000..5ceea479
--- /dev/null
+++ b/kernel.soso/termios.h
@@ -0,0 +1,192 @@
+#ifndef TERMIOS_H
+#define TERMIOS_H
+
+//This file will also be included by C library.
+
+typedef unsigned char       cc_t;
+typedef unsigned int        speed_t;
+typedef unsigned int        tcflag_t;
+
+#define NCCS 32
+
+struct termios
+  {
+    tcflag_t c_iflag;        // input mode flags
+    tcflag_t c_oflag;        // output mode flags
+    tcflag_t c_cflag;        // control mode flags
+    tcflag_t c_lflag;        // local mode flags
+    cc_t c_line;             // line discipline
+    cc_t c_cc[NCCS];         // control characters
+    speed_t c_ispeed;        // input speed
+    speed_t c_ospeed;        // output speed
+
+  };
+
+// c_cc characters
+#define VINTR 0
+#define VQUIT 1
+#define VERASE 2
+#define VKILL 3
+#define VEOF 4
+#define VTIME 5
+#define VMIN 6
+#define VSWTC 7
+#define VSTART 8
+#define VSTOP 9
+#define VSUSP 10
+#define VEOL 11
+#define VREPRINT 12
+#define VDISCARD 13
+#define VWERASE 14
+#define VLNEXT 15
+#define VEOL2 16
+
+// c_iflag bits
+#define IGNBRK        0000001
+#define BRKINT        0000002
+#define IGNPAR        0000004
+#define PARMRK        0000010
+#define INPCK        0000020
+#define ISTRIP        0000040
+#define INLCR        0000100
+#define IGNCR        0000200
+#define ICRNL        0000400
+#define IUCLC        0001000
+#define IXON        0002000
+#define IXANY        0004000
+#define IXOFF        0010000
+#define IMAXBEL        0020000
+#define IUTF8        0040000
+
+// c_oflag bits
+#define OPOST        0000001
+#define OLCUC        0000002
+#define ONLCR        0000004
+#define OCRNL        0000010
+#define ONOCR        0000020
+#define ONLRET        0000040
+#define OFILL        0000100
+#define OFDEL        0000200
+#define NLDLY        0000400
+#define   NL0        0000000
+#define   NL1        0000400
+#define CRDLY        0003000
+#define   CR0        0000000
+#define   CR1        0001000
+#define   CR2        0002000
+#define   CR3        0003000
+#define TABDLY        0014000
+#define   TAB0        0000000
+#define   TAB1        0004000
+#define   TAB2        0010000
+#define   TAB3        0014000
+#define BSDLY        0020000
+#define   BS0        0000000
+#define   BS1        0020000
+#define FFDLY        0100000
+#define   FF0        0000000
+#define   FF1        0100000
+
+#define VTDLY        0040000
+#define   VT0        0000000
+#define   VT1        0040000
+#define XTABS        0014000
+
+// c_cflag bit meaning
+# define CBAUD        0010017
+
+#define  B0        0000000                // hang up
+#define  B50        0000001
+#define  B75        0000002
+#define  B110        0000003
+#define  B134        0000004
+#define  B150        0000005
+#define  B200        0000006
+#define  B300        0000007
+#define  B600        0000010
+#define  B1200        0000011
+#define  B1800        0000012
+#define  B2400        0000013
+#define  B4800        0000014
+#define  B9600        0000015
+#define  B19200        0000016
+#define  B38400        0000017
+#define EXTA B19200
+#define EXTB B38400
+#define CSIZE        0000060
+#define   CS5        0000000
+#define   CS6        0000020
+#define   CS7        0000040
+#define   CS8        0000060
+#define CSTOPB        0000100
+#define CREAD        0000200
+#define PARENB        0000400
+#define PARODD        0001000
+#define HUPCL        0002000
+#define CLOCAL        0004000
+
+#define CBAUDEX 0010000
+
+#define  B57600   0010001
+#define  B115200  0010002
+#define  B230400  0010003
+#define  B460800  0010004
+#define  B500000  0010005
+#define  B576000  0010006
+#define  B921600  0010007
+#define  B1000000 0010010
+#define  B1152000 0010011
+#define  B1500000 0010012
+#define  B2000000 0010013
+#define  B2500000 0010014
+#define  B3000000 0010015
+#define  B3500000 0010016
+#define  B4000000 0010017
+#define __MAX_BAUD B4000000
+
+#define CIBAUD   002003600000                // input baud rate (not used)
+#define CMSPAR   010000000000                // mark or space (stick) parity
+#define CRTSCTS  020000000000                // flow control
+
+// c_lflag bits
+#define ISIG        0000001
+#define ICANON        0000002
+#define XCASE        0000004
+#define ECHO        0000010
+#define ECHOE        0000020
+#define ECHOK        0000040
+#define ECHONL        0000100
+#define NOFLSH        0000200
+#define TOSTOP        0000400
+#define ECHOCTL 0001000
+#define ECHOPRT 0002000
+#define ECHOKE         0004000
+#define FLUSHO         0010000
+#define PENDIN         0040000
+
+#define IEXTEN        0100000
+#define EXTPROC 0200000
+
+// tcflow() and TCXONC use these
+#define        TCOOFF               0
+#define        TCOON                1
+#define        TCIOFF               2
+#define        TCION                3
+
+// tcflush() and TCFLSH use these
+#define        TCIFLUSH        0
+#define        TCOFLUSH        1
+#define        TCIOFLUSH       2
+
+// tcsetattr uses these
+#define        TCSANOW          0
+#define        TCSADRAIN        1
+#define        TCSAFLUSH        2
+
+//ioctl interface
+#define TCGETS		0x5001
+#define TCSETS		0x5002
+#define TCSETSW		0x5003
+#define TCSETSF		0x5004
+
+#endif // TERMIOS_H