text:
#define _IOC(a,b,c,d) ( ((a)<<29) | ((b)<<8) | (c) | ((d)<<16) )
#define _IOC_NONE  1U
#define _IOC_WRITE 4U
#define _IOC_READ  2U

#define _IO(a,b) _IOC(_IOC_NONE,(a),(b),0)
#define _IOW(a,b,c) _IOC(_IOC_WRITE,(a),(b),sizeof(c))
#define _IOR(a,b,c) _IOC(_IOC_READ,(a),(b),sizeof(c))
#define _IOWR(a,b,c) _IOC(_IOC_READ|_IOC_WRITE,(a),(b),sizeof(c))

#define FIONCLEX	_IO('f', 2)
#define FIOCLEX		_IO('f', 1)
#define FIOASYNC	_IOW('f', 125, int)
#define FIONBIO		_IOW('f', 126, int)
#define FIONREAD	_IOR('f', 127, int)
#define TIOCINQ		FIONREAD
#define FIOQSIZE	_IOR('f', 128, char[8])
#define TIOCGETP	_IOR('t', 8, char[6])
#define TIOCSETP	_IOW('t', 9, char[6])
#define TIOCSETN	_IOW('t', 10, char[6])

#define TIOCSETC	_IOW('t', 17, char[6])
#define TIOCGETC	_IOR('t', 18, char[6])
#define TCGETS		_IOR('t', 19, char[44])
#define TCSETS		_IOW('t', 20, char[44])
#define TCSETSW		_IOW('t', 21, char[44])
#define TCSETSF		_IOW('t', 22, char[44])

#define TCGETA		_IOR('t', 23, char[20])
#define TCSETA		_IOW('t', 24, char[20])
#define TCSETAW		_IOW('t', 25, char[20])
#define TCSETAF		_IOW('t', 28, char[20])

#define TCSBRK		_IO('t', 29)
#define TCXONC		_IO('t', 30)
#define TCFLSH		_IO('t', 31)

#define TIOCSWINSZ	_IOW('t', 103, char[8])
#define TIOCGWINSZ	_IOR('t', 104, char[8])
#define TIOCSTART	_IO('t', 110)
#define TIOCSTOP	_IO('t', 111)

#define TIOCOUTQ	_IOR('t', 115, int)

#define TIOCGLTC	_IOR('t', 116, char[6])
#define TIOCSLTC	_IOW('t', 117, char[6])
#define TIOCSPGRP	_IOW('t', 118, int)
#define TIOCGPGRP	_IOR('t', 119, int)

#define TIOCEXCL	0x540C
#define TIOCNXCL	0x540D
#define TIOCSCTTY	0x540E

#define TIOCSTI		0x5412
#define TIOCMGET	0x5415
#define TIOCMBIS	0x5416
#define TIOCMBIC	0x5417
#define TIOCMSET	0x5418
#define TIOCM_LE	0x001
#define TIOCM_DTR	0x002
#define TIOCM_RTS	0x004
#define TIOCM_ST	0x008
#define TIOCM_SR	0x010
#define TIOCM_CTS	0x020
#define TIOCM_CAR	0x040
#define TIOCM_RNG	0x080
#define TIOCM_DSR	0x100
#define TIOCM_CD	TIOCM_CAR
#define TIOCM_RI	TIOCM_RNG
#define TIOCM_OUT1	0x2000
#define TIOCM_OUT2	0x4000
#define TIOCM_LOOP	0x8000

#define TIOCGSOFTCAR	0x5419
#define TIOCSSOFTCAR	0x541A
#define TIOCLINUX	0x541C
#define TIOCCONS	0x541D
#define TIOCGSERIAL	0x541E
#define TIOCSSERIAL	0x541F
#define TIOCPKT	0x5420
#define TIOCPKT_DATA		0
#define TIOCPKT_FLUSHREAD	1
#define TIOCPKT_FLUSHWRITE	2
#define TIOCPKT_STOP		4
#define TIOCPKT_START		8
#define TIOCPKT_NOSTOP		16
#define TIOCPKT_DOSTOP		32
#define TIOCPKT_IOCTL		64

#define TIOCNOTTY	0x5422
#define TIOCSETD	0x5423
#define TIOCGETD	0x5424
#define TCSBRKP		0x5425
#define TIOCSBRK	0x5427
#define TIOCCBRK	0x5428
#define TIOCGSID	0x5429
#define TIOCGRS485	0x542e
#define TIOCSRS485	0x542f
#define TIOCGPTN	_IOR('T',0x30, unsigned int)
#define TIOCSPTLCK	_IOW('T',0x31, int)
#define TIOCGDEV	_IOR('T',0x32, unsigned int)
#define TIOCSIG		_IOW('T',0x36, int)
#define TIOCVHANGUP	0x5437

#define TIOCSERCONFIG	0x5453
#define TIOCSERGWILD	0x5454
#define TIOCSERSWILD	0x5455
#define TIOCGLCKTRMIOS	0x5456
#define TIOCSLCKTRMIOS	0x5457
#define TIOCSERGSTRUCT	0x5458
#define TIOCSERGETLSR	0x5459
#define TIOCSER_TEMT	0x01
#define TIOCSERGETMULTI	0x545A
#define TIOCSERSETMULTI	0x545B

#define TIOCMIWAIT	0x545C
#define TIOCGICOUNT	0x545D

/* end kernel header ioctls.h */

#define TIOCTTYGSTRUCT	0x5426

#define TCGETX		0x5432
#define TCSETX		0x5433
#define TCSETXF		0x5434
#define TCSETXW		0x5435

#define TIOCGHAYESESP   0x545E
#define TIOCSHAYESESP   0x545F

struct winsize {
	unsigned short ws_row;
	unsigned short ws_col;
	unsigned short ws_xpixel;
	unsigned short ws_ypixel;
};

#define TIOCM_MODEM_BITS TIOCM_OUT2

#define N_TTY           0
#define N_SLIP          1
#define N_MOUSE         2
#define N_PPP           3
#define N_STRIP         4
#define N_AX25          5
#define N_X25           6
#define N_6PACK         7
#define N_MASC          8
#define N_R3964         9
#define N_PROFIBUS_FDL  10
#define N_IRDA          11
#define N_SMSBLOCK      12
#define N_HDLC          13
#define N_SYNC_PPP      14
#define N_HCI           15

#define FIOSETOWN       0x8901
#define SIOCSPGRP       0x8902
#define FIOGETOWN       0x8903
#define SIOCGPGRP       0x8904
#define SIOCATMARK      0x8905
#define SIOCGSTAMP      0x8906

#define SIOCADDRT       0x890B
#define SIOCDELRT       0x890C
#define SIOCRTMSG       0x890D

#define SIOCGIFNAME     0x8910
#define SIOCSIFLINK     0x8911
#define SIOCGIFCONF     0x8912
#define SIOCGIFFLAGS    0x8913
#define SIOCSIFFLAGS    0x8914
#define SIOCGIFADDR     0x8915
#define SIOCSIFADDR     0x8916
#define SIOCGIFDSTADDR  0x8917
#define SIOCSIFDSTADDR  0x8918
#define SIOCGIFBRDADDR  0x8919
#define SIOCSIFBRDADDR  0x891a
#define SIOCGIFNETMASK  0x891b
#define SIOCSIFNETMASK  0x891c
#define SIOCGIFMETRIC   0x891d
#define SIOCSIFMETRIC   0x891e
#define SIOCGIFMEM      0x891f
#define SIOCSIFMEM      0x8920
#define SIOCGIFMTU      0x8921
#define SIOCSIFMTU      0x8922
#define SIOCSIFHWADDR   0x8924
#define SIOCGIFENCAP    0x8925
#define SIOCSIFENCAP    0x8926
#define SIOCGIFHWADDR   0x8927
#define SIOCGIFSLAVE    0x8929
#define SIOCSIFSLAVE    0x8930
#define SIOCADDMULTI    0x8931
#define SIOCDELMULTI    0x8932
#define SIOCGIFINDEX    0x8933
#define SIOGIFINDEX     SIOCGIFINDEX
#define SIOCSIFPFLAGS   0x8934
#define SIOCGIFPFLAGS   0x8935
#define SIOCDIFADDR     0x8936
#define SIOCSIFHWBROADCAST 0x8937
#define SIOCGIFCOUNT    0x8938

#define SIOCGIFBR       0x8940
#define SIOCSIFBR       0x8941

#define SIOCGIFTXQLEN   0x8942
#define SIOCSIFTXQLEN   0x8943

#define SIOCDARP        0x8953
#define SIOCGARP        0x8954
#define SIOCSARP        0x8955

#define SIOCDRARP       0x8960
#define SIOCGRARP       0x8961
#define SIOCSRARP       0x8962

#define SIOCGIFMAP      0x8970
#define SIOCSIFMAP      0x8971

#define SIOCADDDLCI     0x8980
#define SIOCDELDLCI     0x8981

#define SIOCDEVPRIVATE		0x89F0
#define SIOCPROTOPRIVATE	0x89E0


text:
#define SHMLBA 4096

struct shmid_ds
{
	struct ipc_perm shm_perm;
	int __unused1;
	time_t shm_atime;
	int __unused2;
	time_t shm_dtime;
	int __unused3;
	time_t shm_ctime;
	int __unused4;
	size_t shm_segsz;
	pid_t shm_cpid;
	pid_t shm_lpid;
	unsigned long shm_nattch;
	unsigned long __pad1;
	unsigned long __pad2;
};

struct shminfo {
	unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4];
};

struct shm_info {
	int __used_ids;
	unsigned long shm_tot, shm_rss, shm_swp;
	unsigned long __swap_attempts, __swap_successes;
};

repo_language: C

mime_type: text/x-c


text:
#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
 || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)

#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)

typedef unsigned long greg_t, gregset_t[48];

typedef struct {
	double fpregs[32];
	double fpscr;
	unsigned _pad[2];
} fpregset_t;

typedef struct {
	unsigned vrregs[32][4];
	unsigned vrsave;
	unsigned _pad[2];
	unsigned vscr;
} vrregset_t;

struct sigcontext
{
	unsigned long _unused[4];
	int signal;
	unsigned long handler;
	unsigned long oldmask;
	void *regs;
};

typedef struct {
	gregset_t gregs;
	fpregset_t fpregs;
	vrregset_t vrregs
#ifdef __GNUC__
	__attribute__((__aligned__(16)))
#endif
	;
} mcontext_t;

#else

typedef struct {
	long __regs[48+68+4*32+4]
#ifdef __GNUC__
	__attribute__((__aligned__(16)))
#endif
	;
} mcontext_t;

#endif

struct sigaltstack {
	void *ss_sp;
	int ss_flags;
	size_t ss_size;
};

typedef struct __ucontext {
	unsigned long uc_flags;
	struct __ucontext *uc_link;
	stack_t uc_stack;
	int uc_pad[7];
	mcontext_t *uc_regs;
	sigset_t uc_sigmask;
        int             uc_pad2[3];
	mcontext_t uc_mcontext;
} ucontext_t;

#define SA_NOCLDSTOP  1U
#define SA_NOCLDWAIT  2U
#define SA_SIGINFO    4U
#define SA_ONSTACK    0x08000000U
#define SA_RESTART    0x10000000U
#define SA_NODEFER    0x40000000U
#define SA_RESETHAND  0x80000000U
#define SA_RESTORER   0x04000000U

#endif

#define SIGHUP    1
#define SIGINT    2
#define SIGQUIT   3
#define SIGILL    4
#define SIGTRAP   5
#define SIGABRT   6
#define SIGIOT    SIGABRT
#define SIGBUS    7
#define SIGFPE    8
#define SIGKILL   9
#define SIGUSR1   10
#define SIGSEGV   11
#define SIGUSR2   12
#define SIGPIPE   13
#define SIGALRM   14
#define SIGTERM   15
#define SIGSTKFLT 16
#define SIGCHLD   17
#define SIGCONT   18
#define SIGSTOP   19
#define SIGTSTP   20
#define SIGTTIN   21
#define SIGTTOU   22
#define SIGURG    23
#define SIGXCPU   24
#define SIGXFSZ   25
#define SIGVTALRM 26
#define SIGPROF   27
#define SIGWINCH  28
#define SIGIO     29
#define SIGPOLL   29
#define SIGPWR    30
#define SIGSYS    31
#define SIGUNUSED SIGSYS

#define _NSIG 65


text:
struct ipc_perm
{
	key_t __ipc_perm_key;
	uid_t uid;
	gid_t gid;
	uid_t cuid;
	gid_t cgid;
	mode_t mode;
	int __ipc_perm_seq;
	int __pad1;
	long long __pad2;
	long long __pad3;
};

#define IPC_64 0x100


text:
#define _POSIX_V6_ILP32_OFFBIG  1
#define _POSIX_V7_ILP32_OFFBIG  1


text:
#define va_start(v,l)   __builtin_va_start(v,l)
#define va_end(v)       __builtin_va_end(v)
#define va_arg(v,l)     __builtin_va_arg(v,l)
#define va_copy(d,s)    __builtin_va_copy(d,s)


text:
#undef NCCS
#define NCCS 19
struct termios
{
	tcflag_t c_iflag;
	tcflag_t c_oflag;
	tcflag_t c_cflag;
	tcflag_t c_lflag;
	cc_t c_cc[NCCS];
	cc_t c_line;
	speed_t __c_ispeed;
	speed_t __c_ospeed;
};

#define VINTR		0
#define VQUIT		1
#define VERASE		2
#define VKILL		3
#define VEOF		4
#define VMIN		5
#define VEOL		6
#define VTIME		7
#define VEOL2		8
#define VSWTC		9
#define VWERASE		10
#define VREPRINT	11
#define VSUSP		12
#define VSTART		13
#define VSTOP		14
#define VLNEXT		15
#define VDISCARD	16

#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 IXON	0001000
#define IXOFF	0002000
#define IXANY	0004000
#define IUCLC	0010000
#define IMAXBEL 0020000
#define IUTF8	0040000

#define OPOST	0000001
#define ONLCR	0000002
#define OLCUC	0000004

#define OCRNL	0000010
#define ONOCR	0000020
#define ONLRET	0000040

#define OFILL	00000100
#define OFDEL	00000200
#define NLDLY	00001400
#define NL0	00000000
#define NL1	00000400
#define NL2	00001000
#define NL3	00001400
#define TABDLY	00006000
#define TAB0	00000000
#define TAB1	00002000
#define TAB2	00004000
#define TAB3	00006000
#define CRDLY	00030000
#define CR0	00000000
#define CR1	00010000
#define CR2	00020000
#define CR3	00030000
#define FFDLY	00040000
#define FF0	00000000
#define FF1	00040000
#define BSDLY	00100000
#define BS0	00000000
#define BS1	00100000
#define VTDLY	00200000
#define VT0	00000000
#define VT1	00200000

#define CBAUD	0000377
#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
#define EXTA	B19200
#define EXTB	B38400
#define B57600	00020
#define B115200	00021
#define B230400	00022
#define B460800	00023
#define B500000	00024
#define B576000	00025
#define B921600	00026

#define B1000000	00027
#define B1152000	00030
#define B1500000	00031
#define B2000000	00032
#define B2500000	00033
#define B3000000	00034
#define B3500000	00035
#define B4000000	00036
#define BOTHER	00037

#define CSIZE	00001400
#define CS5	00000000
#define CS6	00000400
#define CS7	00001000
#define CS8	00001400

#define CSTOPB	00002000
#define CREAD	00004000
#define PARENB	00010000
#define PARODD	00020000
#define HUPCL	00040000

#define CLOCAL	00100000

#define ISIG	0x00000080
#define ICANON	0x00000100
#define XCASE	0x00004000
#define ECHO	0x00000008
#define ECHOE	0x00000002
#define ECHOK	0x00000004
#define ECHONL	0x00000010
#define NOFLSH	0x80000000
#define TOSTOP	0x00400000
#define ECHOCTL 0x00000040
#define ECHOPRT 0x00000020
#define ECHOKE	0x00000001
#define FLUSHO	0x00800000
#define PENDIN	0x20000000
#define IEXTEN	0x00000400

#define TCOOFF	0
#define TCOON	1
#define TCIOFF	2
#define TCION	3

#define TCIFLUSH	0
#define TCOFLUSH	1
#define TCIOFLUSH	2

#define TCSANOW		0
#define TCSADRAIN	1
#define TCSAFLUSH	2

#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
#define CBAUDEX	0000000
#define CIBAUD	077600000
#define IBSHIFT 16
#define CMSPAR	010000000000
#define CRTSCTS	020000000000
#define EXTPROC 0x10000000
#define XTABS	00006000
#endif


text: typedef unsigned long long __jmp_buf[56];


text:
#define O_CREAT        0100
#define O_EXCL         0200
#define O_NOCTTY       0400
#define O_TRUNC       01000
#define O_APPEND      02000
#define O_NONBLOCK    04000
#define O_DSYNC      010000
#define O_SYNC     04010000
#define O_RSYNC    04010000
#define O_DIRECTORY  040000
#define O_NOFOLLOW  0100000
#define O_CLOEXEC  02000000

#define O_ASYNC      020000
#define O_DIRECT    0400000
#define O_LARGEFILE 0200000
#define O_NOATIME  01000000
#define O_TMPFILE 020040000
#define O_NDELAY O_NONBLOCK

#define F_DUPFD  0
#define F_GETFD  1
#define F_SETFD  2
#define F_GETFL  3
#define F_SETFL  4

#define F_SETOWN 8
#define F_GETOWN 9
#define F_SETSIG 10
#define F_GETSIG 11

#define F_GETLK 12
#define F_SETLK 13
#define F_SETLKW 14

#define F_SETOWN_EX 15
#define F_GETOWN_EX 16

#define F_GETOWNER_UIDS 17


text:
#undef __WORDSIZE
#define __WORDSIZE 32
/* FIXME */


text:
struct semid_ds {
	struct ipc_perm sem_perm;
	int __unused1;
	time_t sem_otime;
	int  __unused2;
	time_t sem_ctime;
	unsigned short __sem_nsems_pad, sem_nsems;
	long __unused3;
	long __unused4;
};


text:
struct msqid_ds
{
	struct ipc_perm msg_perm;
	int __unused1;
	time_t msg_stime;
	int __unused2;
	time_t msg_rtime;
	int __unused3;
	time_t msg_ctime;
	unsigned long msg_cbytes;
	msgqnum_t msg_qnum;
	msglen_t msg_qbytes;
	pid_t msg_lspid;
	pid_t msg_lrpid;
	unsigned long __unused[2];
};


text:
#define EPERM            1
#define ENOENT           2
#define ESRCH            3
#define EINTR            4
#define EIO              5
#define ENXIO            6
#define E2BIG            7
#define ENOEXEC          8
#define EBADF            9
#define ECHILD          10
#define EAGAIN          11
#define ENOMEM          12
#define EACCES          13
#define EFAULT          14
#define ENOTBLK         15
#define EBUSY           16
#define EEXIST          17
#define EXDEV           18
#define ENODEV          19
#define ENOTDIR         20
#define EISDIR          21
#define EINVAL          22
#define ENFILE          23
#define EMFILE          24
#define ENOTTY          25
#define ETXTBSY         26
#define EFBIG           27
#define ENOSPC          28
#define ESPIPE          29
#define EROFS           30
#define EMLINK          31
#define EPIPE           32
#define EDOM            33
#define ERANGE          34
#define EDEADLK         35
#define ENAMETOOLONG    36
#define ENOLCK          37
#define ENOSYS          38
#define ENOTEMPTY       39
#define ELOOP           40
#define EWOULDBLOCK     EAGAIN
#define ENOMSG          42
#define EIDRM           43
#define ECHRNG          44
#define EL2NSYNC        45
#define EL3HLT          46
#define EL3RST          47
#define ELNRNG          48
#define EUNATCH         49
#define ENOCSI          50
#define EL2HLT          51
#define EBADE           52
#define EBADR           53
#define EXFULL          54
#define ENOANO          55
#define EBADRQC         56
#define EBADSLT         57
#define EDEADLOCK       58
#define EBFONT          59
#define ENOSTR          60
#define ENODATA         61
#define ETIME           62
#define ENOSR           63
#define ENONET          64
#define ENOPKG          65
#define EREMOTE         66
#define ENOLINK         67
#define EADV            68
#define ESRMNT          69
#define ECOMM           70
#define EPROTO          71
#define EMULTIHOP       72
#define EDOTDOT         73
#define EBADMSG         74
#define EOVERFLOW       75
#define ENOTUNIQ        76
#define EBADFD          77
#define EREMCHG         78
#define ELIBACC         79
#define ELIBBAD         80
#define ELIBSCN         81
#define ELIBMAX         82
#define ELIBEXEC        83
#define EILSEQ          84
#define ERESTART        85
#define ESTRPIPE        86
#define EUSERS          87
#define ENOTSOCK        88
#define EDESTADDRREQ    89
#define EMSGSIZE        90
#define EPROTOTYPE      91
#define ENOPROTOOPT     92
#define EPROTONOSUPPORT 93
#define ESOCKTNOSUPPORT 94
#define EOPNOTSUPP      95
#define ENOTSUP         EOPNOTSUPP
#define EPFNOSUPPORT    96
#define EAFNOSUPPORT    97
#define EADDRINUSE      98
#define EADDRNOTAVAIL   99
#define ENETDOWN        100
#define ENETUNREACH     101
#define ENETRESET       102
#define ECONNABORTED    103
#define ECONNRESET      104
#define ENOBUFS         105
#define EISCONN         106
#define ENOTCONN        107
#define ESHUTDOWN       108
#define ETOOMANYREFS    109
#define ETIMEDOUT       110
#define ECONNREFUSED    111
#define EHOSTDOWN       112
#define EHOSTUNREACH    113
#define EALREADY        114
#define EINPROGRESS     115
#define ESTALE          116
#define EUCLEAN         117
#define ENOTNAM         118
#define ENAVAIL         119
#define EISNAM          120
#define EREMOTEIO       121
#define EDQUOT          122
#define ENOMEDIUM       123
#define EMEDIUMTYPE     124
#define ECANCELED       125
#define ENOKEY          126
#define EKEYEXPIRED     127
#define EKEYREVOKED     128
#define EKEYREJECTED    129
#define EOWNERDEAD      130
#define ENOTRECOVERABLE 131
#define ERFKILL         132
#define EHWPOISON       133


text:
#define MAP_FAILED ((void *) -1)

#define	PROT_NONE      0
#define	PROT_READ      1
#define	PROT_WRITE     2
#define	PROT_EXEC      4
#define	PROT_GROWSDOWN 0x01000000
#define	PROT_GROWSUP   0x02000000

#define	MAP_SHARED     0x01
#define	MAP_PRIVATE    0x02
#define	MAP_FIXED      0x10

#define MAP_TYPE       0x0f
#define MAP_FILE       0x00
#define MAP_ANON       0x20
#define MAP_ANONYMOUS  MAP_ANON
#define MAP_NORESERVE  0x40
#define MAP_GROWSDOWN  0x0100
#define MAP_DENYWRITE  0x0800
#define MAP_EXECUTABLE 0x1000
#define MAP_LOCKED     0x80
#define MAP_POPULATE   0x8000
#define MAP_NONBLOCK   0x10000
#define MAP_STACK      0x20000
#define MAP_HUGETLB    0x40000

#define POSIX_MADV_NORMAL       0
#define POSIX_MADV_RANDOM       1
#define POSIX_MADV_SEQUENTIAL   2
#define POSIX_MADV_WILLNEED     3
#define POSIX_MADV_DONTNEED     0

#define MS_ASYNC        1
#define MS_INVALIDATE   2
#define MS_SYNC         4

#define MCL_CURRENT     1
#define MCL_FUTURE      2

#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
#define MADV_NORMAL      0
#define MADV_RANDOM      1
#define MADV_SEQUENTIAL  2
#define MADV_WILLNEED    3
#define MADV_DONTNEED    4
#define MADV_REMOVE      9
#define MADV_DONTFORK    10
#define MADV_DOFORK      11
#define MADV_MERGEABLE   12
#define MADV_UNMERGEABLE 13
#define MADV_HUGEPAGE    14
#define MADV_NOHUGEPAGE  15
#define MADV_DONTDUMP    16
#define MADV_DODUMP      17
#define MADV_HWPOISON    100
#define MADV_SOFT_OFFLINE 101

#define MREMAP_MAYMOVE  1
#define MREMAP_FIXED    2
#endif


text:
/* copied from kernel definition, but with padding replaced
 * by the corresponding correctly-sized userspace types. */

struct stat
{
	dev_t st_dev;
	ino_t st_ino;
	mode_t st_mode;
	nlink_t st_nlink;
	uid_t st_uid;
	gid_t st_gid;
	dev_t st_rdev;
	short __st_rdev_padding;
	off_t st_size;
	blksize_t st_blksize;
	blkcnt_t st_blocks;
	struct timespec st_atim;
	struct timespec st_mtim;
	struct timespec st_ctim;
	unsigned __unused[2];
};


text:
typedef int32_t int_fast16_t;
typedef int32_t int_fast32_t;
typedef uint32_t uint_fast16_t;
typedef uint32_t uint_fast32_t;

#define INT_FAST16_MIN  INT32_MIN
#define INT_FAST32_MIN  INT32_MIN

#define INT_FAST16_MAX  INT32_MAX
#define INT_FAST32_MAX  INT32_MAX

#define UINT_FAST16_MAX UINT32_MAX
#define UINT_FAST32_MAX UINT32_MAX

#define INTPTR_MIN      INT32_MIN
#define INTPTR_MAX      INT32_MAX
#define UINTPTR_MAX     UINT32_MAX
#define PTRDIFF_MIN     INT32_MIN
#define PTRDIFF_MAX     INT32_MAX
#define SIZE_MAX        UINT32_MAX


text:
struct statfs {
	unsigned long f_type, f_bsize;
	fsblkcnt_t f_blocks, f_bfree, f_bavail;
	fsfilcnt_t f_files, f_ffree;
	fsid_t f_fsid;
	unsigned long f_namelen, f_frsize, f_flags, f_spare[4];
};


text:
#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
 || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
#define LONG_BIT 32
#endif

#define LONG_MAX  0x7fffffffL
#define LLONG_MAX  0x7fffffffffffffffLL


text:
struct msghdr
{
	void *msg_name;
	socklen_t msg_namelen;
	struct iovec *msg_iov;
	int msg_iovlen;
	void *msg_control;
	socklen_t msg_controllen;
	int msg_flags;
};

struct cmsghdr
{
	socklen_t cmsg_len;
	int cmsg_level;
	int cmsg_type;
};

#define SO_DEBUG        1
#define SO_REUSEADDR    2
#define SO_TYPE         3
#define SO_ERROR        4
#define SO_DONTROUTE    5
#define SO_BROADCAST    6
#define SO_SNDBUF       7
#define SO_RCVBUF       8
#define SO_SNDBUFFORCE  32
#define SO_RCVBUFFORCE  33
#define SO_KEEPALIVE    9
#define SO_OOBINLINE    10
#define SO_NO_CHECK     11
#define SO_PRIORITY     12
#define SO_LINGER       13
#define SO_BSDCOMPAT    14
#define SO_REUSEPORT    15
#define SO_RCVLOWAT     16
#define SO_SNDLOWAT     17
#define SO_RCVTIMEO     18
#define SO_SNDTIMEO     19
#define SO_PASSCRED     20
#define SO_PEERCRED     21


text:
#define __NR_restart_syscall          0
#define __NR_exit                     1
#define __NR_fork                     2
#define __NR_read                     3
#define __NR_write                    4
#define __NR_open                     5
#define __NR_close                    6
#define __NR_waitpid                  7
#define __NR_creat                    8
#define __NR_link                     9
#define __NR_unlink                  10
#define __NR_execve                  11
#define __NR_chdir                   12
#define __NR_time                    13
#define __NR_mknod                   14
#define __NR_chmod                   15
#define __NR_lchown                  16
#define __NR_break                   17
#define __NR_oldstat                 18
#define __NR_lseek                   19
#define __NR_getpid                  20
#define __NR_mount                   21
#define __NR_umount                  22
#define __NR_setuid                  23
#define __NR_getuid                  24
#define __NR_stime                   25
#define __NR_ptrace                  26
#define __NR_alarm                   27
#define __NR_oldfstat                28
#define __NR_pause                   29
#define __NR_utime                   30
#define __NR_stty                    31
#define __NR_gtty                    32
#define __NR_access                  33
#define __NR_nice                    34
#define __NR_ftime                   35
#define __NR_sync                    36
#define __NR_kill                    37
#define __NR_rename                  38
#define __NR_mkdir                   39
#define __NR_rmdir                   40
#define __NR_dup                     41
#define __NR_pipe                    42
#define __NR_times                   43
#define __NR_prof                    44
#define __NR_brk                     45
#define __NR_setgid                  46
#define __NR_getgid                  47
#define __NR_signal                  48
#define __NR_geteuid                 49
#define __NR_getegid                 50
#define __NR_acct                    51
#define __NR_umount2                 52
#define __NR_lock                    53
#define __NR_ioctl                   54
#define __NR_fcntl                   55
#define __NR_mpx                     56
#define __NR_setpgid                 57
#define __NR_ulimit                  58
#define __NR_oldolduname             59
#define __NR_umask                   60
#define __NR_chroot                  61
#define __NR_ustat                   62
#define __NR_dup2                    63
#define __NR_getppid                 64
#define __NR_getpgrp                 65
#define __NR_setsid                  66
#define __NR_sigaction               67
#define __NR_sgetmask                68
#define __NR_ssetmask                69
#define __NR_setreuid                70
#define __NR_setregid                71
#define __NR_sigsuspend              72
#define __NR_sigpending              73
#define __NR_sethostname             74
#define __NR_setrlimit               75
#define __NR_getrlimit               76
#define __NR_getrusage               77
#define __NR_gettimeofday            78
#define __NR_settimeofday            79
#define __NR_getgroups               80
#define __NR_setgroups               81
#define __NR_select                  82
#define __NR_symlink                 83
#define __NR_oldlstat                84
#define __NR_readlink                85
#define __NR_uselib                  86
#define __NR_swapon                  87
#define __NR_reboot                  88
#define __NR_readdir                 89
#define __NR_mmap                    90
#define __NR_munmap                  91
#define __NR_truncate                92
#define __NR_ftruncate               93
#define __NR_fchmod                  94
#define __NR_fchown                  95
#define __NR_getpriority             96
#define __NR_setpriority             97
#define __NR_profil                  98
#define __NR_statfs                  99
#define __NR_fstatfs                100
#define __NR_ioperm                 101
#define __NR_socketcall             102
#define __NR_syslog                 103
#define __NR_setitimer              104
#define __NR_getitimer              105
#define __NR_stat                   106
#define __NR_lstat                  107
#define __NR_fstat                  108
#define __NR_olduname               109
#define __NR_iopl                   110
#define __NR_vhangup                111
#define __NR_idle                   112
#define __NR_vm86                   113
#define __NR_wait4                  114
#define __NR_swapoff                115
#define __NR_sysinfo                116
#define __NR_ipc                    117
#define __NR_fsync                  118
#define __NR_sigreturn              119
#define __NR_clone                  120
#define __NR_setdomainname          121
#define __NR_uname                  122
#define __NR_modify_ldt             123
#define __NR_adjtimex               124
#define __NR_mprotect               125
#define __NR_sigprocmask            126
#define __NR_create_module          127
#define __NR_init_module            128
#define __NR_delete_module          129
#define __NR_get_kernel_syms        130
#define __NR_quotactl               131
#define __NR_getpgid                132
#define __NR_fchdir                 133
#define __NR_bdflush                134
#define __NR_sysfs                  135
#define __NR_personality            136
#define __NR_afs_syscall            137
#define __NR_setfsuid               138
#define __NR_setfsgid               139
#define __NR__llseek                140
#define __NR_getdents               141
#define __NR__newselect             142
#define __NR_flock                  143
#define __NR_msync                  144
#define __NR_readv                  145
#define __NR_writev                 146
#define __NR_getsid                 147
#define __NR_fdatasync              148
#define __NR__sysctl                149
#define __NR_mlock                  150
#define __NR_munlock                151
#define __NR_mlockall               152
#define __NR_munlockall             153
#define __NR_sched_setparam         154
#define __NR_sched_getparam         155
#define __NR_sched_setscheduler     156
#define __NR_sched_getscheduler     157
#define __NR_sched_yield            158
#define __NR_sched_get_priority_max 159
#define __NR_sched_get_priority_min 160
#define __NR_sched_rr_get_interval  161
#define __NR_nanosleep              162
#define __NR_mremap                 163
#define __NR_setresuid32            164
#define __NR_setresuid              164
#define __NR_getresuid32            165
#define __NR_getresuid              165
#define __NR_query_module           166
#define __NR_poll                   167
#define __NR_nfsservctl             168
#define __NR_setresgid32            169
#define __NR_setresgid              169
#define __NR_getresgid32            170
#define __NR_getresgid              170
#define __NR_prctl                  171
#define __NR_rt_sigreturn           172
#define __NR_rt_sigaction           173
#define __NR_rt_sigprocmask         174
#define __NR_rt_sigpending          175
#define __NR_rt_sigtimedwait        176
#define __NR_rt_sigqueueinfo        177
#define __NR_rt_sigsuspend          178
#define __NR_pread64                179
#define __NR_pwrite64               180
#define __NR_chown                  181
#define __NR_getcwd                 182
#define __NR_capget                 183
#define __NR_capset                 184
#define __NR_sigaltstack            185
#define __NR_sendfile               186
#define __NR_getpmsg                187
#define __NR_putpmsg                188
#define __NR_vfork                  189
#define __NR_ugetrlimit             190
#define __NR_readahead              191
#if !defined(__PPC64) || defined(__ABI32)
#define __NR_mmap2                  192
#define __NR_truncate64             193
#define __NR_ftruncate64            194
#define __NR_stat64                 195
#define __NR_lstat64                196
#define __NR_fstat64                197
#endif
#define __NR_pciconfig_read         198
#define __NR_pciconfig_write        199
#define __NR_pciconfig_iobase       200
#define __NR_multiplexer            201
#define __NR_getdents64             202
#define __NR_pivot_root             203
#if !defined(__PPC64) || defined(__ABI32)
#define __NR_fcntl64                204
#endif
#define __NR_madvise                205
#define __NR_mincore                206
#define __NR_gettid                 207
#define __NR_tkill                  208
#define __NR_setxattr               209
#define __NR_lsetxattr              210
#define __NR_fsetxattr              211
#define __NR_getxattr               212
#define __NR_lgetxattr              213
#define __NR_fgetxattr              214
#define __NR_listxattr              215
#define __NR_llistxattr             216
#define __NR_flistxattr             217
#define __NR_removexattr            218
#define __NR_lremovexattr           219
#define __NR_fremovexattr           220
#define __NR_futex                  221
#define __NR_sched_setaffinity      222
#define __NR_sched_getaffinity      223
#define __NR_tuxcall                225
#if !defined(__PPC64) || defined(__ABI32)
#define __NR_sendfile64             226
#endif
#define __NR_io_setup               227
#define __NR_io_destroy             228
#define __NR_io_getevents           229
#define __NR_io_submit              230
#define __NR_io_cancel              231
#define __NR_set_tid_address        232
#define __NR_fadvise64              233
#define __NR_exit_group             234
#define __NR_lookup_dcookie         235
#define __NR_epoll_create           236
#define __NR_epoll_ctl              237
#define __NR_epoll_wait             238
#define __NR_remap_file_pages       239
#define __NR_timer_create           240
#define __NR_timer_settime          241
#define __NR_timer_gettime          242
#define __NR_timer_getoverrun       243
#define __NR_timer_delete           244
#define __NR_clock_settime          245
#define __NR_clock_gettime          246
#define __NR_clock_getres           247
#define __NR_clock_nanosleep        248
#define __NR_swapcontext            249
#define __NR_tgkill                 250
#define __NR_utimes                 251
#define __NR_statfs64               252
#define __NR_fstatfs64              253
#if !defined(__PPC64) || defined(__ABI32)
#define __NR_fadvise64_64           254
#endif
#define __NR_rtas		255
#define __NR_sys_debug_setcontext 256
#define __NR_migrate_pages	258
#define __NR_mbind		259
#define __NR_get_mempolicy	260
#define __NR_set_mempolicy	261
#define __NR_mq_open		262
#define __NR_mq_unlink		263
#define __NR_mq_timedsend	264
#define __NR_mq_timedreceive	265
#define __NR_mq_notify		266
#define __NR_mq_getsetattr	267
#define __NR_kexec_load		268
#define __NR_add_key		269
#define __NR_request_key	270
#define __NR_keyctl		271
#define __NR_waitid		272
#define __NR_ioprio_set		273
#define __NR_ioprio_get		274
#define __NR_inotify_init	275
#define __NR_inotify_add_watch	276
#define __NR_inotify_rm_watch	277
#define __NR_spu_run		278
#define __NR_spu_create		279
#define __NR_pselect6		280
#define __NR_ppoll		281
#define __NR_unshare		282
#define __NR_splice		283
#define __NR_tee		284
#define __NR_vmsplice		285
#define __NR_openat		286
#define __NR_mkdirat		287
#define __NR_mknodat		288
#define __NR_fchownat		289
#define __NR_futimesat		290
#if defined(__PPC64) && !defined(__ABI32)
#define __NR_newfstatat		291
#else
#define __NR_fstatat64		291
#endif
#define __NR_unlinkat		292
#define __NR_renameat		293
#define __NR_linkat		294
#define __NR_symlinkat		295
#define __NR_readlinkat		296
#define __NR_fchmodat		297
#define __NR_faccessat		298
#define __NR_get_robust_list	299
#define __NR_set_robust_list	300
#define __NR_move_pages		301
#define __NR_getcpu		302
#define __NR_epoll_pwait	303
#define __NR_utimensat		304
#define __NR_signalfd		305
#define __NR_timerfd		306
#define __NR_timerfd_create     306
#define __NR_eventfd		307
#define __NR_sync_file_range2	308
#define __NR_fallocate		309
#define __NR_subpage_prot		310
#define __NR_timerfd_settime	311
#define __NR_timerfd_gettime	312
#define __NR_signalfd4		313
#define __NR_eventfd2		314
#define __NR_epoll_create1	315
#define __NR_dup3			316
#define __NR_pipe2		317
#define __NR_inotify_init1	318
#define __NR_perf_event_open       319
#define __NR_preadv                320
#define __NR_pwritev               321
#define __NR_rt_tgsigqueueinfo     322
#define __NR_fanotify_init         323
#define __NR_fanotify_mark         324
#define __NR_prlimit64             325
#define __NR_socket                326
#define __NR_bind                  327
#define __NR_connect               328
#define __NR_listen                329
#define __NR_accept                330
#define __NR_getsockname           331
#define __NR_getpeername           332
#define __NR_socketpair            333
#define __NR_send                  334
#define __NR_sendto                335
#define __NR_recv                  336
#define __NR_recvfrom              337
#define __NR_shutdown              338
#define __NR_setsockopt            339
#define __NR_getsockopt            340
#define __NR_sendmsg               341
#define __NR_recvmsg               342
#define __NR_recvmmsg              343
#define __NR_accept4               344
#define __NR_name_to_handle_at     345
#define __NR_open_by_handle_at     346
#define __NR_clock_adjtime         347
#define __NR_syncfs                348
#define __NR_sendmmsg              349
#define __NR_setns                 350
#define __NR_process_vm_readv      351
#define __NR_process_vm_writev     352
#define __NR_finit_module          353
#define __NR_kcmp                  354
#define __NR_sched_setattr         355
#define __NR_sched_getattr         356
#define __NR_renameat2             357
#define __NR_seccomp               358
#define __NR_getrandom             359
#define __NR_memfd_create          360

/*
 * repeated with SYS prefix
 */
#define SYS_restart_syscall          0
#define SYS_exit                     1
#define SYS_fork                     2
#define SYS_read                     3
#define SYS_write                    4
#define SYS_open                     5
#define SYS_close                    6
#define SYS_waitpid                  7
#define SYS_creat                    8
#define SYS_link                     9
#define SYS_unlink                  10
#define SYS_execve                  11
#define SYS_chdir                   12
#define SYS_time                    13
#define SYS_mknod                   14
#define SYS_chmod                   15
#define SYS_lchown                  16
#define SYS_break                   17
#define SYS_oldstat                 18
#define SYS_lseek                   19
#define SYS_getpid                  20
#define SYS_mount                   21
#define SYS_umount                  22
#define SYS_setuid                  23
#define SYS_getuid                  24
#define SYS_stime                   25
#define SYS_ptrace                  26
#define SYS_alarm                   27
#define SYS_oldfstat                28
#define SYS_pause                   29
#define SYS_utime                   30
#define SYS_stty                    31
#define SYS_gtty                    32
#define SYS_access                  33
#define SYS_nice                    34
#define SYS_ftime                   35
#define SYS_sync                    36
#define SYS_kill                    37
#define SYS_rename                  38
#define SYS_mkdir                   39
#define SYS_rmdir                   40
#define SYS_dup                     41
#define SYS_pipe                    42
#define SYS_times                   43
#define SYS_prof                    44
#define SYS_brk                     45
#define SYS_setgid                  46
#define SYS_getgid                  47
#define SYS_signal                  48
#define SYS_geteuid                 49
#define SYS_getegid                 50
#define SYS_acct                    51
#define SYS_umount2                 52
#define SYS_lock                    53
#define SYS_ioctl                   54
#define SYS_fcntl                   55
#define SYS_mpx                     56
#define SYS_setpgid                 57
#define SYS_ulimit                  58
#define SYS_oldolduname             59
#define SYS_umask                   60
#define SYS_chroot                  61
#define SYS_ustat                   62
#define SYS_dup2                    63
#define SYS_getppid                 64
#define SYS_getpgrp                 65
#define SYS_setsid                  66
#define SYS_sigaction               67
#define SYS_sgetmask                68
#define SYS_ssetmask                69
#define SYS_setreuid                70
#define SYS_setregid                71
#define SYS_sigsuspend              72
#define SYS_sigpending              73
#define SYS_sethostname             74
#define SYS_setrlimit               75
#define SYS_getrlimit               76
#define SYS_getrusage               77
#define SYS_gettimeofday            78
#define SYS_settimeofday            79
#define SYS_getgroups               80
#define SYS_setgroups               81
#define SYS_select                  82
#define SYS_symlink                 83
#define SYS_oldlstat                84
#define SYS_readlink                85
#define SYS_uselib                  86
#define SYS_swapon                  87
#define SYS_reboot                  88
#define SYS_readdir                 89
#define SYS_mmap                    90
#define SYS_munmap                  91
#define SYS_truncate                92
#define SYS_ftruncate               93
#define SYS_fchmod                  94
#define SYS_fchown                  95
#define SYS_getpriority             96
#define SYS_setpriority             97
#define SYS_profil                  98
#define SYS_statfs                  99
#define SYS_fstatfs                100
#define SYS_ioperm                 101
#define SYS_socketcall             102
#define SYS_syslog                 103
#define SYS_setitimer              104
#define SYS_getitimer              105
#define SYS_stat                   106
#define SYS_lstat                  107
#define SYS_fstat                  108
#define SYS_olduname               109
#define SYS_iopl                   110
#define SYS_vhangup                111
#define SYS_idle                   112
#define SYS_vm86                   113
#define SYS_wait4                  114
#define SYS_swapoff                115
#define SYS_sysinfo                116
#define SYS_ipc                    117
#define SYS_fsync                  118
#define SYS_sigreturn              119
#define SYS_clone                  120
#define SYS_setdomainname          121
#define SYS_uname                  122
#define SYS_modify_ldt             123
#define SYS_adjtimex               124
#define SYS_mprotect               125
#define SYS_sigprocmask            126
#define SYS_create_module          127
#define SYS_init_module            128
#define SYS_delete_module          129
#define SYS_get_kernel_syms        130
#define SYS_quotactl               131
#define SYS_getpgid                132
#define SYS_fchdir                 133
#define SYS_bdflush                134
#define SYS_sysfs                  135
#define SYS_personality            136
#define SYS_afs_syscall            137
#define SYS_setfsuid               138
#define SYS_setfsgid               139
#define SYS__llseek                140
#define SYS_getdents               141
#define SYS__newselect             142
#define SYS_flock                  143
#define SYS_msync                  144
#define SYS_readv                  145
#define SYS_writev                 146
#define SYS_getsid                 147
#define SYS_fdatasync              148
#define SYS__sysctl                149
#define SYS_mlock                  150
#define SYS_munlock                151
#define SYS_mlockall               152
#define SYS_munlockall             153
#define SYS_sched_setparam         154
#define SYS_sched_getparam         155
#define SYS_sched_setscheduler     156
#define SYS_sched_getscheduler     157
#define SYS_sched_yield            158
#define SYS_sched_get_priority_max 159
#define SYS_sched_get_priority_min 160
#define SYS_sched_rr_get_interval  161
#define SYS_nanosleep              162
#define SYS_mremap                 163
#define SYS_setresuid32            164
#define SYS_setresuid              164
#define SYS_getresuid32            165
#define SYS_getresuid              165
#define SYS_query_module           166
#define SYS_poll                   167
#define SYS_nfsservctl             168
#define SYS_setresgid32            169
#define SYS_setresgid              169
#define SYS_getresgid32            170
#define SYS_getresgid              170
#define SYS_prctl                  171
#define SYS_rt_sigreturn           172
#define SYS_rt_sigaction           173
#define SYS_rt_sigprocmask         174
#define SYS_rt_sigpending          175
#define SYS_rt_sigtimedwait        176
#define SYS_rt_sigqueueinfo        177
#define SYS_rt_sigsuspend          178
#define SYS_pread64                179
#define SYS_pwrite64               180
#define SYS_chown                  181
#define SYS_getcwd                 182
#define SYS_capget                 183
#define SYS_capset                 184
#define SYS_sigaltstack            185
#define SYS_sendfile               186
#define SYS_getpmsg                187
#define SYS_putpmsg                188
#define SYS_vfork                  189
#define SYS_ugetrlimit             190
#define SYS_readahead              191
#if !defined(__PPC64) || defined(__ABI32)
#define SYS_mmap2                  192
#define SYS_truncate64             193
#define SYS_ftruncate64            194
#define SYS_stat64                 195
#define SYS_lstat64                196
#define SYS_fstat64                197
#endif
#define SYS_pciconfig_read         198
#define SYS_pciconfig_write        199
#define SYS_pciconfig_iobase       200
#define SYS_multiplexer            201
#define SYS_getdents64             202
#define SYS_pivot_root             203
#if !defined(__PPC64) || defined(__ABI32)
#define SYS_fcntl64                204
#endif
#define SYS_madvise                205
#define SYS_mincore                206
#define SYS_gettid                 207
#define SYS_tkill                  208
#define SYS_setxattr               209
#define SYS_lsetxattr              210
#define SYS_fsetxattr              211
#define SYS_getxattr               212
#define SYS_lgetxattr              213
#define SYS_fgetxattr              214
#define SYS_listxattr              215
#define SYS_llistxattr             216
#define SYS_flistxattr             217
#define SYS_removexattr            218
#define SYS_lremovexattr           219
#define SYS_fremovexattr           220
#define SYS_futex                  221
#define SYS_sched_setaffinity      222
#define SYS_sched_getaffinity      223
#define SYS_tuxcall                225
#if !defined(__PPC64) || defined(__ABI32)
#define SYS_sendfile64             226
#endif
#define SYS_io_setup               227
#define SYS_io_destroy             228
#define SYS_io_getevents           229
#define SYS_io_submit              230
#define SYS_io_cancel              231
#define SYS_set_tid_address        232
#define SYS_fadvise64              233
#define SYS_exit_group             234
#define SYS_lookup_dcookie         235
#define SYS_epoll_create           236
#define SYS_epoll_ctl              237
#define SYS_epoll_wait             238
#define SYS_remap_file_pages       239
#define SYS_timer_create           240
#define SYS_timer_settime          241
#define SYS_timer_gettime          242
#define SYS_timer_getoverrun       243
#define SYS_timer_delete           244
#define SYS_clock_settime          245
#define SYS_clock_gettime          246
#define SYS_clock_getres           247
#define SYS_clock_nanosleep        248
#define SYS_swapcontext            249
#define SYS_tgkill                 250
#define SYS_utimes                 251
#define SYS_statfs64               252
#define SYS_fstatfs64              253
#if !defined(__PPC64) || defined(__ABI32)
#define SYS_fadvise64_64           254
#endif
#define SYS_rtas		255
#define SYS_sys_debug_setcontext 256
#define SYS_migrate_pages	258
#define SYS_mbind		259
#define SYS_get_mempolicy	260
#define SYS_set_mempolicy	261
#define SYS_mq_open		262
#define SYS_mq_unlink		263
#define SYS_mq_timedsend	264
#define SYS_mq_timedreceive	265
#define SYS_mq_notify		266
#define SYS_mq_getsetattr	267
#define SYS_kexec_load		268
#define SYS_add_key		269
#define SYS_request_key	270
#define SYS_keyctl		271
#define SYS_waitid		272
#define SYS_ioprio_set		273
#define SYS_ioprio_get		274
#define SYS_inotify_init	275
#define SYS_inotify_add_watch	276
#define SYS_inotify_rm_watch	277
#define SYS_spu_run		278
#define SYS_spu_create		279
#define SYS_pselect6		280
#define SYS_ppoll		281
#define SYS_unshare		282
#define SYS_splice		283
#define SYS_tee		284
#define SYS_vmsplice		285
#define SYS_openat		286
#define SYS_mkdirat		287
#define SYS_mknodat		288
#define SYS_fchownat		289
#define SYS_futimesat		290
#if defined(__PPC64) && !defined(__ABI32)
#define SYS_newfstatat		291
#else
#define SYS_fstatat64		291
#endif
#define SYS_unlinkat		292
#define SYS_renameat		293
#define SYS_linkat		294
#define SYS_symlinkat		295
#define SYS_readlinkat		296
#define SYS_fchmodat		297
#define SYS_faccessat		298
#define SYS_get_robust_list	299
#define SYS_set_robust_list	300
#define SYS_move_pages		301
#define SYS_getcpu		302
#define SYS_epoll_pwait	303
#define SYS_utimensat		304
#define SYS_signalfd		305
#define SYS_timerfd		306
#define SYS_timerfd_create      306
#define SYS_eventfd		307
#define SYS_sync_file_range2	308
#define SYS_fallocate		309
#define SYS_subpage_prot		310
#define SYS_timerfd_settime	311
#define SYS_timerfd_gettime	312
#define SYS_signalfd4		313
#define SYS_eventfd2		314
#define SYS_epoll_create1	315
#define SYS_dup3			316
#define SYS_pipe2		317
#define SYS_inotify_init1	318
#define SYS_perf_event_open       319
#define SYS_preadv                320
#define SYS_pwritev               321
#define SYS_rt_tgsigqueueinfo     322
#define SYS_fanotify_init         323
#define SYS_fanotify_mark         324
#define SYS_prlimit64             325
#define SYS_socket                326
#define SYS_bind                  327
#define SYS_connect               328
#define SYS_listen                329
#define SYS_accept                330
#define SYS_getsockname           331
#define SYS_getpeername           332
#define SYS_socketpair            333
#define SYS_send                  334
#define SYS_sendto                335
#define SYS_recv                  336
#define SYS_recvfrom              337
#define SYS_shutdown              338
#define SYS_setsockopt            339
#define SYS_getsockopt            340
#define SYS_sendmsg               341
#define SYS_recvmsg               342
#define SYS_recvmmsg              343
#define SYS_accept4               344
#define SYS_name_to_handle_at     345
#define SYS_open_by_handle_at     346
#define SYS_clock_adjtime         347
#define SYS_syncfs                348
#define SYS_sendmmsg              349
#define SYS_setns                 350
#define SYS_process_vm_readv      351
#define SYS_process_vm_writev     352
#define SYS_finit_module          353
#define SYS_kcmp                  354
#define SYS_sched_setattr         355
#define SYS_sched_getattr         356
#define SYS_renameat2             357
#define SYS_seccomp               358
#define SYS_getrandom             359
#define SYS_memfd_create          360


text:
#define _Addr int
#define _Int64 long long
#define _Reg int

TYPEDEF __builtin_va_list va_list;
TYPEDEF __builtin_va_list __isoc_va_list;

#ifndef __cplusplus
TYPEDEF long wchar_t;
#endif
TYPEDEF unsigned wint_t;

TYPEDEF float float_t;
TYPEDEF double double_t;

TYPEDEF struct { long long __ll; long double __ld; } max_align_t;

TYPEDEF long time_t;
TYPEDEF long suseconds_t;

TYPEDEF struct { union { int __i[9]; unsigned __s[9]; } __u; } pthread_attr_t;
TYPEDEF struct { union { int __i[6]; volatile void *volatile __p[6]; } __u; } pthread_mutex_t;
TYPEDEF struct { union { int __i[6]; volatile void *volatile __p[6]; } __u; } mtx_t;
TYPEDEF struct { union { int __i[12]; void *__p[12]; } __u; } pthread_cond_t;
TYPEDEF struct { union { int __i[12]; void *__p[12]; } __u; } cnd_t;
TYPEDEF struct { union { int __i[8]; void *__p[8]; } __u; } pthread_rwlock_t;
TYPEDEF struct { union { int __i[5]; void *__p[5]; } __u; } pthread_barrier_t;


text:
static inline struct pthread *__pthread_self()
{
	char *self;
	__asm__ __volatile__ ("stc gbr,%0" : "=r" (self) );
	return (struct pthread *) (self + 8 - sizeof(struct pthread));
}

#define TLS_ABOVE_TP
#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) - 8)

#define CANCEL_REG_IP 17


text:
#if __BYTE_ORDER == __BIG_ENDIAN
#define ENDIAN_SUFFIX "eb"
#else
#define ENDIAN_SUFFIX ""
#endif

#define LDSO_ARCH "sh" ENDIAN_SUFFIX

#define TPOFF_K 8

static int remap_rel(int type)
{
	switch(type) {
	case R_SH_DIR32:
		return REL_SYMBOLIC;
	case R_SH_REL32:
		return REL_OFFSET;
	case R_SH_GLOB_DAT:
		return REL_GOT;
	case R_SH_JMP_SLOT:
		return REL_PLT;
	case R_SH_RELATIVE:
		return REL_RELATIVE;
	case R_SH_COPY:
		return REL_COPY;
	case R_SH_TLS_DTPMOD32:
		return REL_DTPMOD;
	case R_SH_TLS_DTPOFF32:
		return REL_DTPOFF;
	case R_SH_TLS_TPOFF32:
		return REL_TPOFF;
	}
	return 0;
}


text:
#ifndef _INTERNAL_ATOMIC_H
#define _INTERNAL_ATOMIC_H

#include <stdint.h>

static inline int a_ctz_l(unsigned long x)
{
	static const char debruijn32[32] = {
		0, 1, 23, 2, 29, 24, 19, 3, 30, 27, 25, 11, 20, 8, 4, 13,
		31, 22, 28, 18, 26, 10, 7, 12, 21, 17, 9, 6, 16, 5, 15, 14
	};
	return debruijn32[(x&-x)*0x076be629 >> 27];
}

static inline int a_ctz_64(uint64_t x)
{
	uint32_t y = x;
	if (!y) {
		y = x>>32;
		return 32 + a_ctz_l(y);
	}
	return a_ctz_l(y);
}

int  __sh_cas(volatile int *, int, int);
int  __sh_swap(volatile int *, int);
int  __sh_fetch_add(volatile int *, int);
void __sh_store(volatile int *, int);
void __sh_and(volatile int *, int);
void __sh_or(volatile int *, int);

#define a_cas(p,t,s)     __sh_cas(p,t,s)
#define a_swap(x,v)      __sh_swap(x,v)
#define a_fetch_add(x,v) __sh_fetch_add(x, v)
#define a_store(x,v)     __sh_store(x, v)
#define a_and(x,v)       __sh_and(x, v)
#define a_or(x,v)        __sh_or(x, v)

static inline void *a_cas_p(volatile void *p, void *t, void *s)
{
	return (void *)a_cas(p, (int)t, (int)s);
}

static inline void a_inc(volatile int *x)
{
	a_fetch_add(x, 1);
}

static inline void a_dec(volatile int *x)
{
	a_fetch_add(x, -1);
}

#define a_spin a_barrier

static inline void a_barrier()
{
	a_cas(&(int){0}, 0, 0);
}

static inline void a_crash()
{
	*(volatile char *)0=0;
}

static inline void a_or_l(volatile void *p, long v)
{
	a_or(p, v);
}

static inline void a_and_64(volatile uint64_t *p, uint64_t v)
{
	union { uint64_t v; uint32_t r[2]; } u = { v };
	a_and((int *)p,   u.r[0]);
	a_and((int *)p+1, u.r[1]);
}

static inline void a_or_64(volatile uint64_t *p, uint64_t v)
{
	union { uint64_t v; uint32_t r[2]; } u = { v };
	a_or((int *)p,   u.r[0]);
	a_or((int *)p+1, u.r[1]);
}

#endif


text:
#define __SYSCALL_LL_E(x) \
((union { long long ll; long l[2]; }){ .ll = x }).l[0], \
((union { long long ll; long l[2]; }){ .ll = x }).l[1]
#define __SYSCALL_LL_O(x) __SYSCALL_LL_E((x))

/* The extra OR instructions are to work around a hardware bug:
 * http://documentation.renesas.com/doc/products/mpumcu/tu/tnsh7456ae.pdf
 */
#define __asm_syscall(trapno, ...) do {   \
	__asm__ __volatile__ (                \
		"trapa #" #trapno "\n"            \
		"or r0, r0\n"                     \
		"or r0, r0\n"                     \
		"or r0, r0\n"                     \
		"or r0, r0\n"                     \
		"or r0, r0\n"                     \
	: "=r"(r0) : __VA_ARGS__ : "memory"); \
	return r0;                            \
	} while (0)

static inline long __syscall0(long n)
{
	register long r3 __asm__("r3") = n;
	register long r0 __asm__("r0");
	__asm_syscall(16, "r"(r3));
}

static inline long __syscall1(long n, long a)
{
	register long r3 __asm__("r3") = n;
	register long r4 __asm__("r4") = a;
	register long r0 __asm__("r0");
	__asm_syscall(17, "r"(r3), "r"(r4));
}

static inline long __syscall2(long n, long a, long b)
{
	register long r3 __asm__("r3") = n;
	register long r4 __asm__("r4") = a;
	register long r5 __asm__("r5") = b;
	register long r0 __asm__("r0");
	__asm_syscall(18, "r"(r3), "r"(r4), "r"(r5));
}

static inline long __syscall3(long n, long a, long b, long c)
{
	register long r3 __asm__("r3") = n;
	register long r4 __asm__("r4") = a;
	register long r5 __asm__("r5") = b;
	register long r6 __asm__("r6") = c;
	register long r0 __asm__("r0");
	__asm_syscall(19, "r"(r3), "r"(r4), "r"(r5), "r"(r6));
}

static inline long __syscall4(long n, long a, long b, long c, long d)
{
	register long r3 __asm__("r3") = n;
	register long r4 __asm__("r4") = a;
	register long r5 __asm__("r5") = b;
	register long r6 __asm__("r6") = c;
	register long r7 __asm__("r7") = d;
	register long r0 __asm__("r0");
	__asm_syscall(20, "r"(r3), "r"(r4), "r"(r5), "r"(r6), "r"(r7));
}

static inline long __syscall5(long n, long a, long b, long c, long d, long e)
{
	register long r3 __asm__("r3") = n;
	register long r4 __asm__("r4") = a;
	register long r5 __asm__("r5") = b;
	register long r6 __asm__("r6") = c;
	register long r7 __asm__("r7") = d;
	register long r0 __asm__("r0") = e;
	__asm_syscall(21, "r"(r3), "r"(r4), "r"(r5), "r"(r6), "r"(r7), "0"(r0));
}

static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f)
{
	register long r3 __asm__("r3") = n;
	register long r4 __asm__("r4") = a;
	register long r5 __asm__("r5") = b;
	register long r6 __asm__("r6") = c;
	register long r7 __asm__("r7") = d;
	register long r0 __asm__("r0") = e;
	register long r1 __asm__("r1") = f;
	__asm_syscall(22, "r"(r3), "r"(r4), "r"(r5), "r"(r6), "r"(r7), "0"(r0), "r"(r1));
}


text:
__asm__("\
.global _start \n\
_start: \n\
	mov r15, r4 \n\
	mov #-16, r0 \n\
	and r0, r15 \n\
	bsr __cstart \n\
	nop \n\
");

/* used by gcc for switching the FPU between single and double precision */
const unsigned long __fpscr_values[2] = { 0, 0x80000 };


text:
#include "libc.h"

/* used by gcc for switching the FPU between single and double precision */
const unsigned long __fpscr_values[2] ATTR_LIBC_VISIBILITY = { 0, 0x80000 };


text:
#include "libc.h"

#define LLSC_CLOBBERS   "r0", "t", "memory"
#define LLSC_START(mem) "synco\n"  \
	"0:	movli.l @" mem ", r0\n"
#define LLSC_END(mem)              \
	"1:	movco.l r0, @" mem "\n"    \
	"	bf 0b\n"                   \
	"	synco\n"

/* gusa is a hack in the kernel which lets you create a sequence of instructions
 * which will be restarted if the process is preempted in the middle of the
 * sequence. It will do for implementing atomics on non-smp systems. ABI is:
 * r0  = address of first instruction after the atomic sequence
 * r1  = original stack pointer
 * r15 = -1 * length of atomic sequence in bytes
 */
#define GUSA_CLOBBERS   "r0", "r1", "memory"
#define GUSA_START(mem,old,nop)    \
	"	.align 2\n"                \
	"	mova 1f, r0\n"             \
	nop                            \
	"	mov r15, r1\n"             \
	"	mov #(0f-1f), r15\n"       \
	"0:	mov.l @" mem ", " old "\n"
/* the target of mova must be 4 byte aligned, so we may need a nop */
#define GUSA_START_ODD(mem,old)  GUSA_START(mem,old,"")
#define GUSA_START_EVEN(mem,old) GUSA_START(mem,old,"\tnop\n")
#define GUSA_END(mem,new)          \
	"	mov.l " new ", @" mem "\n" \
	"1:	mov r1, r15\n"

#define CPU_HAS_LLSC 0x0040

int __sh_cas(volatile int *p, int t, int s)
{
	int old;
	if (__hwcap & CPU_HAS_LLSC) {
		__asm__ __volatile__(
			LLSC_START("%1")
			"	mov r0, %0\n"
			"	cmp/eq %0, %2\n"
			"	bf 1f\n"
			"	mov %3, r0\n"
			LLSC_END("%1")
			: "=&r"(old) : "r"(p), "r"(t), "r"(s) : LLSC_CLOBBERS);
	} else {
		__asm__ __volatile__(
			GUSA_START_EVEN("%1", "%0")
			"	cmp/eq %0, %2\n"
			"	bf 1f\n"
			GUSA_END("%1", "%3")
			: "=&r"(old) : "r"(p), "r"(t), "r"(s) : GUSA_CLOBBERS, "t");
	}
	return old;
}

int __sh_swap(volatile int *x, int v)
{
	int old;
	if (__hwcap & CPU_HAS_LLSC) {
		__asm__ __volatile__(
			LLSC_START("%1")
			"	mov r0, %0\n"
			"	mov %2, r0\n"
			LLSC_END("%1")
			: "=&r"(old) : "r"(x), "r"(v) : LLSC_CLOBBERS);
	} else {
		__asm__ __volatile__(
			GUSA_START_EVEN("%1", "%0")
			GUSA_END("%1", "%2")
			: "=&r"(old) : "r"(x), "r"(v) : GUSA_CLOBBERS);
	}
	return old;
}

int __sh_fetch_add(volatile int *x, int v)
{
	int old, dummy;
	if (__hwcap & CPU_HAS_LLSC) {
		__asm__ __volatile__(
			LLSC_START("%1")
			"	mov r0, %0\n"
			"	add %2, r0\n"
			LLSC_END("%1")
			: "=&r"(old) : "r"(x), "r"(v) : LLSC_CLOBBERS);
	} else {
		__asm__ __volatile__(
			GUSA_START_EVEN("%2", "%0")
			"	mov %0, %1\n"
			"	add %3, %1\n"
			GUSA_END("%2", "%1")
			: "=&r"(old), "=&r"(dummy) : "r"(x), "r"(v) : GUSA_CLOBBERS);
	}
	return old;
}

void __sh_store(volatile int *p, int x)
{
	if (__hwcap & CPU_HAS_LLSC) {
		__asm__ __volatile__(
			"	synco\n"
			"	mov.l %1, @%0\n"
			"	synco\n"
			: : "r"(p), "r"(x) : "memory");
	} else {
		__asm__ __volatile__(
			"	mov.l %1, @%0\n"
			: : "r"(p), "r"(x) : "memory");
	}
}

void __sh_and(volatile int *x, int v)
{
	int dummy;
	if (__hwcap & CPU_HAS_LLSC) {
		__asm__ __volatile__(
			LLSC_START("%0")
			"	and %1, r0\n"
			LLSC_END("%0")
			: : "r"(x), "r"(v) : LLSC_CLOBBERS);
	} else {
		__asm__ __volatile__(
			GUSA_START_ODD("%1", "%0")
			"	and %2, %0\n"
			GUSA_END("%1", "%0")
			: "=&r"(dummy) : "r"(x), "r"(v) : GUSA_CLOBBERS);
	}
}

void __sh_or(volatile int *x, int v)
{
	int dummy;
	if (__hwcap & CPU_HAS_LLSC) {
		__asm__ __volatile__(
			LLSC_START("%0")
			"	or %1, r0\n"
			LLSC_END("%0")
			: : "r"(x), "r"(v) : LLSC_CLOBBERS);
	} else {
		__asm__ __volatile__(
			GUSA_START_ODD("%1", "%0")
			"	or %2, %0\n"
			GUSA_END("%1", "%0")
			: "=&r"(dummy) : "r"(x), "r"(v) : GUSA_CLOBBERS);
	}
}


text:
#undef __WORDSIZE
#define __WORDSIZE 32

#define REG_REG0	 0
#define REG_REG15	15
#define REG_PC		16
#define REG_PR		17
#define REG_SR		18
#define REG_GBR		19
#define REG_MACH	20
#define REG_MACL	21
#define REG_SYSCALL	22
#define REG_FPREG0	23
#define REG_FPREG15	38
#define REG_XFREG0	39
#define REG_XFREG15	54
#define REG_FPSCR	55
#define REG_FPUL	56

struct pt_regs {
	unsigned long regs[16];
	unsigned long pc;
	unsigned long pr;
	unsigned long sr;
	unsigned long gbr;
	unsigned long mach;
	unsigned long macl;
	long tra;
};

struct pt_dspregs {
	unsigned long a1;
	unsigned long a0g;
	unsigned long a1g;
	unsigned long m0;
	unsigned long m1;
	unsigned long a0;
	unsigned long x0;
	unsigned long x1;
	unsigned long y0;
	unsigned long y1;
	unsigned long dsr;
	unsigned long rs;
	unsigned long re;
	unsigned long mod;
};

struct user_fpu_struct {
	unsigned long fp_regs[16];
	unsigned long xfp_regs[16];
	unsigned long fpscr;
	unsigned long fpul;
};

#define ELF_NGREG 23
typedef unsigned long elf_greg_t;
typedef elf_greg_t elf_gregset_t[ELF_NGREG];
typedef struct user_fpu_struct elf_fpregset_t;

struct user {
	struct pt_regs regs;
	struct user_fpu_struct fpu;
	int u_fpvalid;
	unsigned long u_tsize;
	unsigned long u_dsize;
	unsigned long u_ssize;
	unsigned long start_code;
	unsigned long start_data;
	unsigned long start_stack;
	long int signal;
	unsigned long u_ar0;
	struct user_fpu_struct *u_fpstate;
	unsigned long magic;
	char u_comm[32];
};


text:
#if __BIG_ENDIAN__
#define __BYTE_ORDER __BIG_ENDIAN
#else
#define __BYTE_ORDER __LITTLE_ENDIAN
#endif


text:
#define FLT_ROUNDS 1
#define FLT_EVAL_METHOD 0

#define LDBL_TRUE_MIN 4.94065645841246544177e-324L
#define LDBL_MIN 2.22507385850720138309e-308L
#define LDBL_MAX 1.79769313486231570815e+308L
#define LDBL_EPSILON 2.22044604925031308085e-16L

#define LDBL_MANT_DIG 53
#define LDBL_MIN_EXP (-1021)
#define LDBL_MAX_EXP 1024

#define LDBL_DIG 15
#define LDBL_MIN_10_EXP (-307)
#define LDBL_MAX_10_EXP 308

#define DECIMAL_DIG 17


text:
#ifndef __SH_FPU_ANY__

#define FE_ALL_EXCEPT 0
#define FE_TONEAREST  0

#else

#define FE_TONEAREST  0
#define FE_TOWARDZERO 1

#define FE_INEXACT    0x04
#define FE_UNDERFLOW  0x08
#define FE_OVERFLOW   0x10
#define FE_DIVBYZERO  0x20
#define FE_INVALID    0x40
#define FE_ALL_EXCEPT 0x7c

#endif

typedef unsigned long fexcept_t;

typedef struct {
	unsigned long __cw;
} fenv_t;

#define FE_DFL_ENV    ((const fenv_t *) -1)


text:
#define _IOC(a,b,c,d) ( ((a)<<30) | ((b)<<8) | (c) | ((d)<<16) )
#define _IOC_NONE  0U
#define _IOC_WRITE 1U
#define _IOC_READ  2U

#define _IO(a,b) _IOC(_IOC_NONE,(a),(b),0)
#define _IOW(a,b,c) _IOC(_IOC_WRITE,(a),(b),sizeof(c))
#define _IOR(a,b,c) _IOC(_IOC_READ,(a),(b),sizeof(c))
#define _IOWR(a,b,c) _IOC(_IOC_READ|_IOC_WRITE,(a),(b),sizeof(c))

#define FIOCLEX             _IO('f',  1)
#define FIONCLEX            _IO('f',  2)
#define FIOASYNC            _IOW('f', 125, int)
#define FIONBIO             _IOW('f', 126, int)
#define FIONREAD            _IOR('f', 127, int)
#define TIOCINQ             FIONREAD
#define FIOQSIZE            _IOR('f', 128, char[8])

#define TCGETA              _IOR('t', 23, char[18])
#define TCSETA              _IOW('t', 24, char[18])
#define TCSETAW             _IOW('t', 25, char[18])
#define TCSETAF             _IOW('t', 28, char[18])

#define TCSBRK              _IO('t', 29)
#define TCXONC              _IO('t', 30)
#define TCFLSH              _IO('t', 31)

#define TIOCSWINSZ          _IOW('t', 103, char[8])
#define TIOCGWINSZ          _IOR('t', 104, char[8])
#define TIOCSTART           _IO('t',  110)
#define TIOCSTOP            _IO('t',  111)
#define TIOCOUTQ            _IOR('t', 115, int)

#define TIOCSPGRP           _IOW('t', 118, int)
#define TIOCGPGRP           _IOR('t', 119, int)

#define TIOCEXCL            _IO('T', 12)
#define TIOCNXCL            _IO('T', 13)
#define TIOCSCTTY           _IO('T', 14)

#define TIOCSTI             _IOW('T', 18, char)
#define TIOCMGET            _IOR('T', 21, unsigned int)
#define TIOCMBIS            _IOW('T', 22, unsigned int)
#define TIOCMBIC            _IOW('T', 23, unsigned int)
#define TIOCMSET            _IOW('T', 24, unsigned int)
#define TIOCM_LE            0x001
#define TIOCM_DTR           0x002
#define TIOCM_RTS           0x004
#define TIOCM_ST            0x008
#define TIOCM_SR            0x010
#define TIOCM_CTS           0x020
#define TIOCM_CAR           0x040
#define TIOCM_RNG           0x080
#define TIOCM_DSR           0x100
#define TIOCM_CD            TIOCM_CAR
#define TIOCM_RI            TIOCM_RNG
#define TIOCM_OUT1          0x2000
#define TIOCM_OUT2          0x4000
#define TIOCM_LOOP          0x8000

#define TIOCGSOFTCAR        _IOR('T', 25, unsigned int)
#define TIOCSSOFTCAR        _IOW('T', 26, unsigned int)
#define TIOCLINUX           _IOW('T', 28, char)
#define TIOCCONS            _IO('T',  29)
#define TIOCGSERIAL         _IOR('T', 30, char[60])
#define TIOCSSERIAL         _IOW('T', 31, char[60])
#define TIOCPKT             _IOW('T', 32, int)
#define TIOCPKT_DATA        0
#define TIOCPKT_FLUSHREAD   1
#define TIOCPKT_FLUSHWRITE  2
#define TIOCPKT_STOP        4
#define TIOCPKT_START       8
#define TIOCPKT_NOSTOP      16
#define TIOCPKT_DOSTOP      32
#define TIOCPKT_IOCTL       64

#define TIOCNOTTY           _IO('T',  34)
#define TIOCSETD            _IOW('T', 35, int)
#define TIOCGETD            _IOR('T', 36, int)
#define TCSBRKP             _IOW('T', 37, int)
#define TIOCSBRK            _IO('T',  39)
#define TIOCCBRK            _IO('T',  40)
#define TIOCGSID            _IOR('T', 41, int)
#define TCGETS              _IO('T', 1)
#define TCSETS              _IO('T', 2)
#define TCSETSW             _IO('T', 3)
#define TCSETSF             _IO('T', 4)
#define TCGETS2             _IOR('T', 42, char[44])
#define TCSETS2             _IOW('T', 43, char[44])
#define TCSETSW2            _IOW('T', 44, char[44])
#define TCSETSF2            _IOW('T', 45, char[44])
#define TIOCGPTN            _IOR('T', 48, unsigned int)
#define TIOCSPTLCK          _IOW('T', 49, int)
#define TIOCGDEV            _IOR('T', 50, unsigned int)
#define TIOCSIG             _IOW('T', 54, int)
#define TIOCVHANGUP         _IO('T',  55)
#define TIOCGPKT            _IOR('T', 56, int)
#define TIOCGPTLCK          _IOR('T', 57, int)
#define TIOCGEXCL           _IOR('T', 64, int)

#define TIOCSERCONFIG       _IO('T',  83)
#define TIOCSERGWILD        _IOR('T', 84, int)
#define TIOCSERSWILD        _IOW('T', 85, int)
#define TIOCGLCKTRMIOS      _IO('T',  86)
#define TIOCSLCKTRMIOS      _IO('T',  87)
#define TIOCSERGSTRUCT      _IOR('T', 88, char[216])
#define TIOCSERGETLSR       _IOR('T', 89, unsigned int)
#define TIOCSER_TEMT        0x01
#define TIOCSERGETMULTI     _IOR('T', 90, char[168])
#define TIOCSERSETMULTI     _IOW('T', 91, char[168])

#define TIOCMIWAIT          _IO('T', 92)
#define TIOCGICOUNT         _IO('T', 93)

struct winsize {
    unsigned short ws_row;
    unsigned short ws_col;
    unsigned short ws_xpixel;
    unsigned short ws_ypixel;
};

#define TIOCM_MODEM_BITS TIOCM_OUT2

#define N_TTY           0
#define N_SLIP          1
#define N_MOUSE         2
#define N_PPP           3
#define N_STRIP         4
#define N_AX25          5
#define N_X25           6
#define N_6PACK         7
#define N_MASC          8
#define N_R3964         9
#define N_PROFIBUS_FDL  10
#define N_IRDA          11
#define N_SMSBLOCK      12
#define N_HDLC          13
#define N_SYNC_PPP      14
#define N_HCI           15

#define FIOGETOWN       _IOR('f', 123, int)
#define FIOSETOWN       _IOW('f', 124, int)

#define SIOCATMARK      _IOR('s', 7, int)
#define SIOCSPGRP       _IOW('s', 8, int)
#define SIOCGPGRP       _IOW('s', 9, int)
#define SIOCGSTAMP      _IOR('s', 100, char[8])

#define SIOCADDRT       0x890B
#define SIOCDELRT       0x890C
#define SIOCRTMSG       0x890D

#define SIOCGIFNAME     0x8910
#define SIOCSIFLINK     0x8911
#define SIOCGIFCONF     0x8912
#define SIOCGIFFLAGS    0x8913
#define SIOCSIFFLAGS    0x8914
#define SIOCGIFADDR     0x8915
#define SIOCSIFADDR     0x8916
#define SIOCGIFDSTADDR  0x8917
#define SIOCSIFDSTADDR  0x8918
#define SIOCGIFBRDADDR  0x8919
#define SIOCSIFBRDADDR  0x891a
#define SIOCGIFNETMASK  0x891b
#define SIOCSIFNETMASK  0x891c
#define SIOCGIFMETRIC   0x891d
#define SIOCSIFMETRIC   0x891e
#define SIOCGIFMEM      0x891f
#define SIOCSIFMEM      0x8920
#define SIOCGIFMTU      0x8921
#define SIOCSIFMTU      0x8922
#define SIOCSIFHWADDR   0x8924
#define SIOCGIFENCAP    0x8925
#define SIOCSIFENCAP    0x8926
#define SIOCGIFHWADDR   0x8927
#define SIOCGIFSLAVE    0x8929
#define SIOCSIFSLAVE    0x8930
#define SIOCADDMULTI    0x8931
#define SIOCDELMULTI    0x8932
#define SIOCGIFINDEX    0x8933
#define SIOGIFINDEX     SIOCGIFINDEX
#define SIOCSIFPFLAGS   0x8934
#define SIOCGIFPFLAGS   0x8935
#define SIOCDIFADDR     0x8936
#define SIOCSIFHWBROADCAST 0x8937
#define SIOCGIFCOUNT    0x8938

#define SIOCGIFBR       0x8940
#define SIOCSIFBR       0x8941

#define SIOCGIFTXQLEN   0x8942
#define SIOCSIFTXQLEN   0x8943

#define SIOCDARP        0x8953
#define SIOCGARP        0x8954
#define SIOCSARP        0x8955

#define SIOCDRARP       0x8960
#define SIOCGRARP       0x8961
#define SIOCSRARP       0x8962

#define SIOCGIFMAP      0x8970
#define SIOCSIFMAP      0x8971

#define SIOCADDDLCI     0x8980
#define SIOCDELDLCI     0x8981

#define SIOCDEVPRIVATE      0x89F0
#define SIOCPROTOPRIVATE    0x89E0


text:
#define SHMLBA 16384

struct shmid_ds
{
	struct ipc_perm shm_perm;
	size_t shm_segsz;
	time_t shm_atime;
	int __unused1;
	time_t shm_dtime;
	int __unused2;
	time_t shm_ctime;
	int __unused3;
	pid_t shm_cpid;
	pid_t shm_lpid;
	unsigned long shm_nattch;
	unsigned long __pad1;
	unsigned long __pad2;
};

struct shminfo {
	unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4];
};

struct shm_info {
	int __used_ids;
	unsigned long shm_tot, shm_rss, shm_swp;
	unsigned long __swap_attempts, __swap_successes;
};


text:
#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
 || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)

#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
typedef int greg_t, gregset_t[16];
typedef int freg_t, fpregset_t[16];
typedef struct sigcontext {
	unsigned long oldmask;
	unsigned long sc_regs[16];
	unsigned long sc_pc, sc_pr, sc_sr;
	unsigned long sc_gbr, sc_mach, sc_macl;
	unsigned long sc_fpregs[16];
	unsigned long sc_xfpregs[16];
	unsigned int sc_fpscr, sc_fpul, sc_ownedfp;
} mcontext_t;
#else
typedef struct {
	unsigned long __regs[58];
} mcontext_t;
#endif

struct sigaltstack {
	void *ss_sp;
	int ss_flags;
	size_t ss_size;
};

typedef struct __ucontext {
	unsigned long uc_flags;
	struct __ucontext *uc_link;
	stack_t uc_stack;
	mcontext_t uc_mcontext;
	sigset_t uc_sigmask;
} ucontext_t;

#define SA_NOCLDSTOP  1
#define SA_NOCLDWAIT  2
#define SA_SIGINFO    4
#define SA_ONSTACK    0x08000000
#define SA_RESTART    0x10000000
#define SA_NODEFER    0x40000000
#define SA_RESETHAND  0x80000000
#define SA_RESTORER   0x04000000

#endif

#define SIGHUP    1
#define SIGINT    2
#define SIGQUIT   3
#define SIGILL    4
#define SIGTRAP   5
#define SIGABRT   6
#define SIGIOT    SIGABRT
#define SIGBUS    7
#define SIGFPE    8
#define SIGKILL   9
#define SIGUSR1   10
#define SIGSEGV   11
#define SIGUSR2   12
#define SIGPIPE   13
#define SIGALRM   14
#define SIGTERM   15
#define SIGSTKFLT 16
#define SIGCHLD   17
#define SIGCONT   18
#define SIGSTOP   19
#define SIGTSTP   20
#define SIGTTIN   21
#define SIGTTOU   22
#define SIGURG    23
#define SIGXCPU   24
#define SIGXFSZ   25
#define SIGVTALRM 26
#define SIGPROF   27
#define SIGWINCH  28
#define SIGIO     29
#define SIGPOLL   29
#define SIGPWR    30
#define SIGSYS    31
#define SIGUNUSED SIGSYS

#define _NSIG 65


text:
struct ipc_perm
{
	key_t __ipc_perm_key;
	uid_t uid;
	gid_t gid;
	uid_t cuid;
	gid_t cgid;
	mode_t mode;
	int __ipc_perm_seq;
	long __pad1;
	long __pad2;
};

#define IPC_64 0x100


text:
#define _POSIX_V6_ILP32_OFFBIG  1
#define _POSIX_V7_ILP32_OFFBIG  1


text:
#define va_start(v,l)   __builtin_va_start(v,l)
#define va_end(v)       __builtin_va_end(v)
#define va_arg(v,l)     __builtin_va_arg(v,l)
#define va_copy(d,s)    __builtin_va_copy(d,s)


text:
struct termios
{
	tcflag_t c_iflag;
	tcflag_t c_oflag;
	tcflag_t c_cflag;
	tcflag_t c_lflag;
	cc_t c_line;
	cc_t c_cc[NCCS];
	speed_t __c_ispeed;
	speed_t __c_ospeed;
};

#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

#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

#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 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

#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 CBAUD    0010017

#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 ISIG   0000001
#define ICANON 0000002
#define ECHO   0000010
#define ECHOE  0000020
#define ECHOK  0000040
#define ECHONL 0000100
#define NOFLSH 0000200
#define TOSTOP 0000400
#define IEXTEN 0100000

#define ECHOCTL 0001000
#define ECHOPRT 0002000
#define ECHOKE 0004000
#define FLUSHO 0010000
#define PENDIN 0040000

#define TCOOFF 0
#define TCOON  1
#define TCIOFF 2
#define TCION  3

#define TCIFLUSH  0
#define TCOFLUSH  1
#define TCIOFLUSH 2

#define TCSANOW   0
#define TCSADRAIN 1
#define TCSAFLUSH 2

#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
#define CBAUDEX 0010000
#define CRTSCTS  020000000000
#define EXTPROC 0200000
#define XTABS  0014000
#endif


text: typedef unsigned long __jmp_buf[13];


text:
#define O_CREAT        0100
#define O_EXCL         0200
#define O_NOCTTY       0400
#define O_TRUNC       01000
#define O_APPEND      02000
#define O_NONBLOCK    04000
#define O_DSYNC      010000
#define O_SYNC     04010000
#define O_RSYNC    04010000
#define O_DIRECTORY 0200000
#define O_NOFOLLOW  0400000
#define O_CLOEXEC  02000000

#define O_ASYNC      020000
#define O_DIRECT     040000
#define O_LARGEFILE 0100000
#define O_NOATIME  01000000
#define O_TMPFILE 020200000
#define O_NDELAY O_NONBLOCK

#define F_DUPFD  0
#define F_GETFD  1
#define F_SETFD  2
#define F_GETFL  3
#define F_SETFL  4

#define F_SETOWN 8
#define F_GETOWN 9
#define F_SETSIG 10
#define F_GETSIG 11

#define F_GETLK 12
#define F_SETLK 13
#define F_SETLKW 14

#define F_SETOWN_EX 15
#define F_GETOWN_EX 16

#define F_GETOWNER_UIDS 17


text:
struct semid_ds {
	struct ipc_perm sem_perm;
	time_t sem_otime;
	time_t __unused1;
	time_t sem_ctime;
	time_t __unused2;
#if __BYTE_ORDER == __LITTLE_ENDIAN
	unsigned short sem_nsems;
	char __sem_nsems_pad[sizeof(time_t)-sizeof(short)];
#else
	char __sem_nsems_pad[sizeof(time_t)-sizeof(short)];
	unsigned short sem_nsems;
#endif
	time_t __unused3;
	time_t __unused4;
};


text:
struct msqid_ds
{
	struct ipc_perm msg_perm;
	time_t msg_stime;
	int __unused1;
	time_t msg_rtime;
	int __unused2;
	time_t msg_ctime;
	int __unused3;
	unsigned long msg_cbytes;
	msgqnum_t msg_qnum;
	msglen_t msg_qbytes;
	pid_t msg_lspid;
	pid_t msg_lrpid;
	unsigned long __unused[2];
};


text:
#define EPERM            1
#define ENOENT           2
#define ESRCH            3
#define EINTR            4
#define EIO              5
#define ENXIO            6
#define E2BIG            7
#define ENOEXEC          8
#define EBADF            9
#define ECHILD          10
#define EAGAIN          11
#define ENOMEM          12
#define EACCES          13
#define EFAULT          14
#define ENOTBLK         15
#define EBUSY           16
#define EEXIST          17
#define EXDEV           18
#define ENODEV          19
#define ENOTDIR         20
#define EISDIR          21
#define EINVAL          22
#define ENFILE          23
#define EMFILE          24
#define ENOTTY          25
#define ETXTBSY         26
#define EFBIG           27
#define ENOSPC          28
#define ESPIPE          29
#define EROFS           30
#define EMLINK          31
#define EPIPE           32
#define EDOM            33
#define ERANGE          34
#define EDEADLK         35
#define ENAMETOOLONG    36
#define ENOLCK          37
#define ENOSYS          38
#define ENOTEMPTY       39
#define ELOOP           40
#define EWOULDBLOCK     EAGAIN
#define ENOMSG          42
#define EIDRM           43
#define ECHRNG          44
#define EL2NSYNC        45
#define EL3HLT          46
#define EL3RST          47
#define ELNRNG          48
#define EUNATCH         49
#define ENOCSI          50
#define EL2HLT          51
#define EBADE           52
#define EBADR           53
#define EXFULL          54
#define ENOANO          55
#define EBADRQC         56
#define EBADSLT         57
#define EDEADLOCK       EDEADLK
#define EBFONT          59
#define ENOSTR          60
#define ENODATA         61
#define ETIME           62
#define ENOSR           63
#define ENONET          64
#define ENOPKG          65
#define EREMOTE         66
#define ENOLINK         67
#define EADV            68
#define ESRMNT          69
#define ECOMM           70
#define EPROTO          71
#define EMULTIHOP       72
#define EDOTDOT         73
#define EBADMSG         74
#define EOVERFLOW       75
#define ENOTUNIQ        76
#define EBADFD          77
#define EREMCHG         78
#define ELIBACC         79
#define ELIBBAD         80
#define ELIBSCN         81
#define ELIBMAX         82
#define ELIBEXEC        83
#define EILSEQ          84
#define ERESTART        85
#define ESTRPIPE        86
#define EUSERS          87
#define ENOTSOCK        88
#define EDESTADDRREQ    89
#define EMSGSIZE        90
#define EPROTOTYPE      91
#define ENOPROTOOPT     92
#define EPROTONOSUPPORT 93
#define ESOCKTNOSUPPORT 94
#define EOPNOTSUPP      95
#define ENOTSUP         EOPNOTSUPP
#define EPFNOSUPPORT    96
#define EAFNOSUPPORT    97
#define EADDRINUSE      98
#define EADDRNOTAVAIL   99
#define ENETDOWN        100
#define ENETUNREACH     101
#define ENETRESET       102
#define ECONNABORTED    103
#define ECONNRESET      104
#define ENOBUFS         105
#define EISCONN         106
#define ENOTCONN        107
#define ESHUTDOWN       108
#define ETOOMANYREFS    109
#define ETIMEDOUT       110
#define ECONNREFUSED    111
#define EHOSTDOWN       112
#define EHOSTUNREACH    113
#define EALREADY        114
#define EINPROGRESS     115
#define ESTALE          116
#define EUCLEAN         117
#define ENOTNAM         118
#define ENAVAIL         119
#define EISNAM          120
#define EREMOTEIO       121
#define EDQUOT          122
#define ENOMEDIUM       123
#define EMEDIUMTYPE     124
#define ECANCELED       125
#define ENOKEY          126
#define EKEYEXPIRED     127
#define EKEYREVOKED     128
#define EKEYREJECTED    129
#define EOWNERDEAD      130
#define ENOTRECOVERABLE 131
#define ERFKILL         132
#define EHWPOISON       133


text:
#define MAP_FAILED ((void *) -1)

#define	PROT_NONE      0
#define	PROT_READ      1
#define	PROT_WRITE     2
#define	PROT_EXEC      4
#define	PROT_GROWSDOWN 0x01000000
#define	PROT_GROWSUP   0x02000000

#define	MAP_SHARED     0x01
#define	MAP_PRIVATE    0x02
#define	MAP_FIXED      0x10

#define MAP_TYPE       0x0f
#define MAP_FILE       0x00
#define MAP_ANON       0x20
#define MAP_ANONYMOUS  MAP_ANON
#define MAP_32BIT      0x40
#define MAP_NORESERVE  0x4000
#define MAP_GROWSDOWN  0x0100
#define MAP_DENYWRITE  0x0800
#define MAP_EXECUTABLE 0x1000
#define MAP_LOCKED     0x2000
#define MAP_POPULATE   0x8000
#define MAP_NONBLOCK   0x10000
#define MAP_STACK      0x20000
#define MAP_HUGETLB    0x40000

#define POSIX_MADV_NORMAL       0
#define POSIX_MADV_RANDOM       1
#define POSIX_MADV_SEQUENTIAL   2
#define POSIX_MADV_WILLNEED     3
#define POSIX_MADV_DONTNEED     4

#define MS_ASYNC        1
#define MS_INVALIDATE   2
#define MS_SYNC         4

#define MCL_CURRENT     1
#define MCL_FUTURE      2

#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
#define MADV_NORMAL      0
#define MADV_RANDOM      1
#define MADV_SEQUENTIAL  2
#define MADV_WILLNEED    3
#define MADV_DONTNEED    4
#define MADV_REMOVE      9
#define MADV_DONTFORK    10
#define MADV_DOFORK      11
#define MADV_MERGEABLE   12
#define MADV_UNMERGEABLE 13
#define MADV_HUGEPAGE    14
#define MADV_NOHUGEPAGE  15
#define MADV_DONTDUMP    16
#define MADV_DODUMP      17
#define MADV_HWPOISON    100
#define MADV_SOFT_OFFLINE 101

#define MREMAP_MAYMOVE  1
#define MREMAP_FIXED    2
#endif


text:
/* copied from kernel definition, but with padding replaced
 * by the corresponding correctly-sized userspace types. */

struct stat
{
	dev_t st_dev;
	int __st_dev_padding;
	long __st_ino_truncated;
	mode_t st_mode;
	nlink_t st_nlink;
	uid_t st_uid;
	gid_t st_gid;
	dev_t st_rdev;
	int __st_rdev_padding;
	off_t st_size;
	blksize_t st_blksize;
	blkcnt_t st_blocks;
	struct timespec st_atim;
	struct timespec st_mtim;
	struct timespec st_ctim;
	ino_t st_ino;
};


text:
typedef int32_t int_fast16_t;
typedef int32_t int_fast32_t;
typedef uint32_t uint_fast16_t;
typedef uint32_t uint_fast32_t;

#define INT_FAST16_MIN  INT32_MIN
#define INT_FAST32_MIN  INT32_MIN

#define INT_FAST16_MAX  INT32_MAX
#define INT_FAST32_MAX  INT32_MAX

#define UINT_FAST16_MAX UINT32_MAX
#define UINT_FAST32_MAX UINT32_MAX

#define INTPTR_MIN      INT32_MIN
#define INTPTR_MAX      INT32_MAX
#define UINTPTR_MAX     UINT32_MAX
#define PTRDIFF_MIN     INT32_MIN
#define PTRDIFF_MAX     INT32_MAX
#define SIZE_MAX        UINT32_MAX


text:
struct statfs {
	unsigned long f_type, f_bsize;
	fsblkcnt_t f_blocks, f_bfree, f_bavail;
	fsfilcnt_t f_files, f_ffree;
	fsid_t f_fsid;
	unsigned long f_namelen, f_frsize, f_flags, f_spare[4];
};


text:
#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
 || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
#define PAGE_SIZE 4096
#define LONG_BIT 32
#endif

#define LONG_MAX  0x7fffffffL
#define LLONG_MAX  0x7fffffffffffffffLL


text:
struct msghdr
{
	void *msg_name;
	socklen_t msg_namelen;
	struct iovec *msg_iov;
	int msg_iovlen;
	void *msg_control;
	socklen_t msg_controllen;
	int msg_flags;
};

struct cmsghdr
{
	socklen_t cmsg_len;
	int cmsg_level;
	int cmsg_type;
};