Serenity Operating System
at master 209 lines 4.3 kB view raw
1/* 2 * Copyright (c) 2018-2021, Andreas Kling <kling@serenityos.org> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#pragma once 8 9#include <Kernel/API/POSIX/sys/types.h> 10 11#ifdef __cplusplus 12extern "C" { 13#endif 14 15#define NCCS 32 16 17typedef uint32_t tcflag_t; 18typedef uint8_t cc_t; 19typedef uint32_t speed_t; 20 21struct termios { 22 tcflag_t c_iflag; 23 tcflag_t c_oflag; 24 tcflag_t c_cflag; 25 tcflag_t c_lflag; 26 cc_t c_cc[NCCS]; 27 speed_t c_ispeed; 28 speed_t c_ospeed; 29}; 30 31/* c_cc characters */ 32#define VINTR 0 33#define VQUIT 1 34#define VERASE 2 35#define VKILL 3 36#define VEOF 4 37#define VTIME 5 38#define VMIN 6 39#define VSWTC 7 40#define VSTART 8 41#define VSTOP 9 42#define VSUSP 10 43#define VEOL 11 44#define VREPRINT 12 45#define VDISCARD 13 46#define VWERASE 14 47#define VLNEXT 15 48#define VEOL2 16 49#define VINFO 17 50 51/* c_iflag bits */ 52#define IGNBRK 0000001 53#define BRKINT 0000002 54#define IGNPAR 0000004 55#define PARMRK 0000010 56#define INPCK 0000020 57#define ISTRIP 0000040 58#define INLCR 0000100 59#define IGNCR 0000200 60#define ICRNL 0000400 61#define IUCLC 0001000 62#define IXON 0002000 63#define IXANY 0004000 64#define IXOFF 0010000 65#define IMAXBEL 0020000 66#define IUTF8 0040000 67 68/* c_oflag bits */ 69#define OPOST 0000001 70#define OLCUC 0000002 71#define ONLCR 0000004 72#define OCRNL 0000010 73#define ONOCR 0000020 74#define ONLRET 0000040 75#define OFILL 0000100 76#define OFDEL 0000200 77#if defined __USE_MISC || defined __USE_XOPEN 78# define NLDLY 0000400 79# define NL0 0000000 80# define NL1 0000400 81# define CRDLY 0003000 82# define CR0 0000000 83# define CR1 0001000 84# define CR2 0002000 85# define CR3 0003000 86# define TABDLY 0014000 87# define TAB0 0000000 88# define TAB1 0004000 89# define TAB2 0010000 90# define TAB3 0014000 91# define BSDLY 0020000 92# define BS0 0000000 93# define BS1 0020000 94# define FFDLY 0100000 95# define FF0 0000000 96# define FF1 0100000 97#endif 98 99#define VTDLY 0040000 100#define VT0 0000000 101#define VT1 0040000 102 103#ifdef __USE_MISC 104# define XTABS 0014000 105#endif 106 107/* c_cflag bit meaning */ 108#ifdef __USE_MISC 109# define CBAUD 0010017 110#endif 111#define B0 0000000 /* hang up */ 112#define B50 0000001 113#define B75 0000002 114#define B110 0000003 115#define B134 0000004 116#define B150 0000005 117#define B200 0000006 118#define B300 0000007 119#define B600 0000010 120#define B1200 0000011 121#define B1800 0000012 122#define B2400 0000013 123#define B4800 0000014 124#define B9600 0000015 125#define B19200 0000016 126#define B38400 0000017 127#ifdef __USE_MISC 128# define EXTA B19200 129# define EXTB B38400 130#endif 131#define CSIZE 0000060 132#define CS5 0000000 133#define CS6 0000020 134#define CS7 0000040 135#define CS8 0000060 136#define CSTOPB 0000100 137#define CREAD 0000200 138#define PARENB 0000400 139#define PARODD 0001000 140#define HUPCL 0002000 141#define CLOCAL 0004000 142#ifdef __USE_MISC 143# define CBAUDEX 0010000 144#endif 145#define B57600 0010001 146#define B115200 0010002 147#define B230400 0010003 148#define B460800 0010004 149#define B500000 0010005 150#define B576000 0010006 151#define B921600 0010007 152#define B1000000 0010010 153#define B1152000 0010011 154#define B1500000 0010012 155#define B2000000 0010013 156#define B2500000 0010014 157#define B3000000 0010015 158#define B3500000 0010016 159#define B4000000 0010017 160#define __MAX_BAUD B4000000 161#ifdef __USE_MISC 162# define CIBAUD 002003600000 /* input baud rate (not used) */ 163# define CMSPAR 010000000000 /* mark or space (stick) parity */ 164# define CRTSCTS 020000000000 /* flow control */ 165#endif 166 167/* c_lflag bits */ 168#define ISIG 0000001 169#define ICANON 0000002 170#if defined __USE_MISC || (defined __USE_XOPEN && !defined __USE_XOPEN2K) 171# define XCASE 0000004 172#endif 173#define ECHO 0000010 174#define ECHOE 0000020 175#define ECHOK 0000040 176#define ECHONL 0000100 177#define NOFLSH 0000200 178#define TOSTOP 0000400 179#ifdef __USE_MISC 180# define ECHOCTL 0001000 181# define ECHOPRT 0002000 182# define ECHOKE 0004000 183# define FLUSHO 0010000 184# define PENDIN 0040000 185#endif 186#define IEXTEN 0100000 187#ifdef __USE_MISC 188# define EXTPROC 0200000 189#endif 190 191/* tcflow() and TCXONC use these */ 192#define TCOOFF 0 193#define TCOON 1 194#define TCIOFF 2 195#define TCION 3 196 197/* tcflush() and TCFLSH use these */ 198#define TCIFLUSH 0 199#define TCOFLUSH 1 200#define TCIOFLUSH 2 201 202/* tcsetattr uses these */ 203#define TCSANOW 0 204#define TCSADRAIN 1 205#define TCSAFLUSH 2 206 207#ifdef __cplusplus 208} 209#endif