toaruos/base/usr/include/sys/termios.h
2018-10-12 11:15:40 +09:00

201 lines
4.7 KiB
C

#pragma once
#include <_cheader.h>
#ifndef _KERNEL_
#include <sys/types.h>
#else
#include <kernel/types.h>
#endif
_Begin_C_Header
/* Technically part of ioctl */
struct winsize {
unsigned short ws_row;
unsigned short ws_col;
unsigned short ws_xpixel;
unsigned short ws_ypixel;
};
typedef unsigned int tcflag_t;
typedef unsigned int speed_t;
typedef unsigned char cc_t;
/* reserving 0 for particular reason */
#define VEOF 1 /* ^D (end of file) */
#define VEOL 2 /* NULL (end of line) */
#define VERASE 3 /* ^H (backspace/del) */
#define VINTR 4 /* ^C (interrupt) */
#define VKILL 5 /* ^U (erase input buffer) */
#define VMIN 6 /* minimum number of characters for non-canonical read */
#define VQUIT 7 /* ^\ send SIGQUIT */
#define VSTART 8 /* ^Q restart STOPped input */
#define VSTOP 9 /* ^S stop input */
#define VSUSP 10 /* ^Z suspend foreground applicatioan (send SIGTSTP) */
#define VTIME 11 /* Timeout for non-canonical read, deciseconds */
/* flags for input modes */
#define BRKINT 0000001
#define ICRNL 0000002
#define IGNBRK 0000004
#define IGNCR 0000010
#define IGNPAR 0000020
#define INLCR 0000040
#define INPCK 0000100
#define ISTRIP 0000200
#define IUCLC 0000400
#define IXANY 0001000
#define IXOFF 0002000
#define IXON 0004000
#define PARMRK 0010000
/* flags for output modes */
#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
/* baud rates */
#define B0 0000000
#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
/* control modes */
#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
/* local modes */
#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 IEXTEN 0001000
/* attributes */
#define TCSANOW 0x0001
#define TCSADRAIN 0x0002
#define TCSAFLUSH 0x0004
#define TCIFLUSH 0x0001
#define TCIOFLUSH 0x0003
#define TCOFLUSH 0x0002
#define TCIOFF 0x0001
#define TCION 0x0002
#define TCOOFF 0x0004
#define TCOON 0x0008
#define NCCS 32
struct termios {
tcflag_t c_iflag;
tcflag_t c_oflag;
tcflag_t c_cflag;
tcflag_t c_lflag;
cc_t c_cc[NCCS];
};
/* ioctl commands */
#define TCGETS 0x4000 /* Get termios struct */
#define TCSETS 0x4001 /* Set termios struct */
#define TCSETSW 0x4002 /* Set, but let drain first */
#define TCSETSF 0x4003 /* Set, but let flush first */
#define TCGETA TCGETS
#define TCSETA TCSETS
#define TCGETAW TCGETSW
#define TCGETAF TCGETSF
#define TCSBRK 0x4004
#define TCXONC 0x4005
#define TCFLSH 0x4006
#define TIOCEXCL 0x4007
#define TIOCNXCL 0x4008
#define TIOCSCTTY 0x4009
#define TIOCGPGRP 0x400A
#define TIOCSPGRP 0x400B
#define TIOCOUTQ 0x400C
#define TIOCSTI 0x400D
#define TIOCGWINSZ 0x400E
#define TIOCSWINSZ 0x400F
#define TIOCMGET 0x4010
#define TIOCMBIS 0x4011
#define TIOCMBIC 0x4012
#define TIOCMSET 0x4013
#define TIOCGSOFTCAR 0x4014
#define TIOCSSOFTCAR 0x4015
/* termios functions */
#ifndef _KERNEL_
extern speed_t cfgetispeed(const struct termios *);
extern speed_t cfgetospeed(const struct termios *);
extern int cfsetispeed(struct termios *, speed_t);
extern int cfsetospeed(struct termios *, speed_t);
extern int tcdrain(int);
extern int tcflow(int, int);
extern int tcflush(int, int);
extern int tcgetattr(int, struct termios *);
extern pid_t tcgetsid(int);
extern int tcsendbreak(int, int);
extern int tcsetattr(int, int, struct termios *);
extern int ioctl(int, int, void*);
#endif /* ndef _KERNEL_ */
_End_C_Header