From bd5969fc876a10b18613302db7087ef3c40f18e1 Mon Sep 17 00:00:00 2001 From: Ian Moffett Date: Thu, 7 Mar 2024 17:28:00 -0500 Subject: lib: Add mlibc Signed-off-by: Ian Moffett --- lib/mlibc/abis/ironclad/access.h | 9 ++ lib/mlibc/abis/ironclad/auxv.h | 8 ++ lib/mlibc/abis/ironclad/blkcnt_t.h | 7 ++ lib/mlibc/abis/ironclad/blksize_t.h | 8 ++ lib/mlibc/abis/ironclad/clockid_t.h | 7 ++ lib/mlibc/abis/ironclad/dev_t.h | 6 ++ lib/mlibc/abis/ironclad/epoll.h | 6 ++ lib/mlibc/abis/ironclad/errno.h | 126 ++++++++++++++++++++++ lib/mlibc/abis/ironclad/fcntl.h | 79 ++++++++++++++ lib/mlibc/abis/ironclad/fsblkcnt_t.h | 8 ++ lib/mlibc/abis/ironclad/fsfilcnt_t.h | 8 ++ lib/mlibc/abis/ironclad/gid_t.h | 6 ++ lib/mlibc/abis/ironclad/in.h | 168 +++++++++++++++++++++++++++++ lib/mlibc/abis/ironclad/ino_t.h | 7 ++ lib/mlibc/abis/ironclad/inotify.h | 7 ++ lib/mlibc/abis/ironclad/ioctls.h | 13 +++ lib/mlibc/abis/ironclad/limits.h | 14 +++ lib/mlibc/abis/ironclad/mode_t.h | 6 ++ lib/mlibc/abis/ironclad/mqueue.h | 20 ++++ lib/mlibc/abis/ironclad/msg.h | 39 +++++++ lib/mlibc/abis/ironclad/nlink_t.h | 6 ++ lib/mlibc/abis/ironclad/packet.h | 6 ++ lib/mlibc/abis/ironclad/pid_t.h | 6 ++ lib/mlibc/abis/ironclad/poll.h | 16 +++ lib/mlibc/abis/ironclad/ptrace.h | 56 ++++++++++ lib/mlibc/abis/ironclad/reboot.h | 12 +++ lib/mlibc/abis/ironclad/resource.h | 53 ++++++++++ lib/mlibc/abis/ironclad/seek-whence.h | 8 ++ lib/mlibc/abis/ironclad/shm.h | 21 ++++ lib/mlibc/abis/ironclad/signal.h | 192 ++++++++++++++++++++++++++++++++++ lib/mlibc/abis/ironclad/socket.h | 165 +++++++++++++++++++++++++++++ lib/mlibc/abis/ironclad/socklen_t.h | 6 ++ lib/mlibc/abis/ironclad/stat.h | 69 ++++++++++++ lib/mlibc/abis/ironclad/statfs.h | 28 +++++ lib/mlibc/abis/ironclad/statvfs.h | 30 ++++++ lib/mlibc/abis/ironclad/suseconds_t.h | 8 ++ lib/mlibc/abis/ironclad/termios.h | 116 ++++++++++++++++++++ lib/mlibc/abis/ironclad/time.h | 15 +++ lib/mlibc/abis/ironclad/uid_t.h | 6 ++ lib/mlibc/abis/ironclad/utsname.h | 12 +++ lib/mlibc/abis/ironclad/vm-flags.h | 46 ++++++++ lib/mlibc/abis/ironclad/wait.h | 25 +++++ lib/mlibc/abis/ironclad/xattr.h | 21 ++++ 43 files changed, 1475 insertions(+) create mode 100644 lib/mlibc/abis/ironclad/access.h create mode 100644 lib/mlibc/abis/ironclad/auxv.h create mode 100644 lib/mlibc/abis/ironclad/blkcnt_t.h create mode 100644 lib/mlibc/abis/ironclad/blksize_t.h create mode 100644 lib/mlibc/abis/ironclad/clockid_t.h create mode 100644 lib/mlibc/abis/ironclad/dev_t.h create mode 100644 lib/mlibc/abis/ironclad/epoll.h create mode 100644 lib/mlibc/abis/ironclad/errno.h create mode 100644 lib/mlibc/abis/ironclad/fcntl.h create mode 100644 lib/mlibc/abis/ironclad/fsblkcnt_t.h create mode 100644 lib/mlibc/abis/ironclad/fsfilcnt_t.h create mode 100644 lib/mlibc/abis/ironclad/gid_t.h create mode 100644 lib/mlibc/abis/ironclad/in.h create mode 100644 lib/mlibc/abis/ironclad/ino_t.h create mode 100644 lib/mlibc/abis/ironclad/inotify.h create mode 100644 lib/mlibc/abis/ironclad/ioctls.h create mode 100644 lib/mlibc/abis/ironclad/limits.h create mode 100644 lib/mlibc/abis/ironclad/mode_t.h create mode 100644 lib/mlibc/abis/ironclad/mqueue.h create mode 100644 lib/mlibc/abis/ironclad/msg.h create mode 100644 lib/mlibc/abis/ironclad/nlink_t.h create mode 100644 lib/mlibc/abis/ironclad/packet.h create mode 100644 lib/mlibc/abis/ironclad/pid_t.h create mode 100644 lib/mlibc/abis/ironclad/poll.h create mode 100644 lib/mlibc/abis/ironclad/ptrace.h create mode 100644 lib/mlibc/abis/ironclad/reboot.h create mode 100644 lib/mlibc/abis/ironclad/resource.h create mode 100644 lib/mlibc/abis/ironclad/seek-whence.h create mode 100644 lib/mlibc/abis/ironclad/shm.h create mode 100644 lib/mlibc/abis/ironclad/signal.h create mode 100644 lib/mlibc/abis/ironclad/socket.h create mode 100644 lib/mlibc/abis/ironclad/socklen_t.h create mode 100644 lib/mlibc/abis/ironclad/stat.h create mode 100644 lib/mlibc/abis/ironclad/statfs.h create mode 100644 lib/mlibc/abis/ironclad/statvfs.h create mode 100644 lib/mlibc/abis/ironclad/suseconds_t.h create mode 100644 lib/mlibc/abis/ironclad/termios.h create mode 100644 lib/mlibc/abis/ironclad/time.h create mode 100644 lib/mlibc/abis/ironclad/uid_t.h create mode 100644 lib/mlibc/abis/ironclad/utsname.h create mode 100644 lib/mlibc/abis/ironclad/vm-flags.h create mode 100644 lib/mlibc/abis/ironclad/wait.h create mode 100644 lib/mlibc/abis/ironclad/xattr.h (limited to 'lib/mlibc/abis/ironclad') diff --git a/lib/mlibc/abis/ironclad/access.h b/lib/mlibc/abis/ironclad/access.h new file mode 100644 index 0000000..bc19728 --- /dev/null +++ b/lib/mlibc/abis/ironclad/access.h @@ -0,0 +1,9 @@ +#ifndef _ABIBITS_ACCESS_H +#define _ABIBITS_ACCESS_H + +#define F_OK 1 +#define R_OK 2 +#define W_OK 4 +#define X_OK 8 + +#endif // _ABIBITS_ACCESS_H diff --git a/lib/mlibc/abis/ironclad/auxv.h b/lib/mlibc/abis/ironclad/auxv.h new file mode 100644 index 0000000..4e93ed3 --- /dev/null +++ b/lib/mlibc/abis/ironclad/auxv.h @@ -0,0 +1,8 @@ +#ifndef _ABIBITS_AUXV_H +#define _ABIBITS_AUXV_H + +#define AT_SECURE 23 +#define AT_RANDOM 25 +#define AT_EXECFN 31 + +#endif diff --git a/lib/mlibc/abis/ironclad/blkcnt_t.h b/lib/mlibc/abis/ironclad/blkcnt_t.h new file mode 100644 index 0000000..51c1519 --- /dev/null +++ b/lib/mlibc/abis/ironclad/blkcnt_t.h @@ -0,0 +1,7 @@ +#ifndef _ABIBITS_BLKCNT_T_H +#define _ABIBITS_BLKCNT_T_H + +// TODO: use int64_t? +typedef long blkcnt_t; + +#endif // _ABIBITS_BLKCNT_T_H diff --git a/lib/mlibc/abis/ironclad/blksize_t.h b/lib/mlibc/abis/ironclad/blksize_t.h new file mode 100644 index 0000000..9f87294 --- /dev/null +++ b/lib/mlibc/abis/ironclad/blksize_t.h @@ -0,0 +1,8 @@ +#ifndef _ABIBITS_BLKSIZE_T_H +#define _ABIBITS_BLKSIZE_T_H + +// TODO: use int64_t? +typedef long blksize_t; + +#endif // _ABIBITS_BLKSIZE_T_H + diff --git a/lib/mlibc/abis/ironclad/clockid_t.h b/lib/mlibc/abis/ironclad/clockid_t.h new file mode 100644 index 0000000..c3932ef --- /dev/null +++ b/lib/mlibc/abis/ironclad/clockid_t.h @@ -0,0 +1,7 @@ +#ifndef _ABIBITS_CLOCKID_T_H +#define _ABIBITS_CLOCKID_T_H + +typedef long clockid_t; + +#endif /* _ABIBITS_CLOCKID_T_H */ + diff --git a/lib/mlibc/abis/ironclad/dev_t.h b/lib/mlibc/abis/ironclad/dev_t.h new file mode 100644 index 0000000..0b63fe5 --- /dev/null +++ b/lib/mlibc/abis/ironclad/dev_t.h @@ -0,0 +1,6 @@ +#ifndef _ABIBITS_DEV_T_H +#define _ABIBITS_DEV_T_H + +typedef unsigned long dev_t; + +#endif // _ABIBITS_DEV_T_H diff --git a/lib/mlibc/abis/ironclad/epoll.h b/lib/mlibc/abis/ironclad/epoll.h new file mode 100644 index 0000000..49969d5 --- /dev/null +++ b/lib/mlibc/abis/ironclad/epoll.h @@ -0,0 +1,6 @@ +#ifndef _ABIBITS_EPOLL_H +#define _ABIBITS_EPOLL_H + +#define EPOLL_CLOEXEC 1 + +#endif // _ABIBITS_EPOLL_H diff --git a/lib/mlibc/abis/ironclad/errno.h b/lib/mlibc/abis/ironclad/errno.h new file mode 100644 index 0000000..f8c7203 --- /dev/null +++ b/lib/mlibc/abis/ironclad/errno.h @@ -0,0 +1,126 @@ +#ifndef _ABIBITS_ERRNO_H +#define _ABIBITS_ERRNO_H + +#define EDOM 1 +#define EILSEQ 2 +#define ERANGE 3 + +#define E2BIG 1001 +#define EACCES 1002 +#define EADDRINUSE 1003 +#define EADDRNOTAVAIL 1004 +#define EAFNOSUPPORT 1005 +#define EAGAIN 1006 +#define EALREADY 1007 +#define EBADF 1008 +#define EBADMSG 1009 +#define EBUSY 1010 +#define ECANCELED 1011 +#define ECHILD 1012 +#define ECONNABORTED 1013 +#define ECONNREFUSED 1014 +#define ECONNRESET 1015 +#define EDEADLK 1016 +#define EDESTADDRREQ 1017 +#define EDQUOT 1018 +#define EEXIST 1019 +#define EFAULT 1020 +#define EFBIG 1021 +#define EHOSTUNREACH 1022 +#define EIDRM 1023 +#define EINPROGRESS 1024 +#define EINTR 1025 +#define EINVAL 1026 +#define EIO 1027 +#define EISCONN 1028 +#define EISDIR 1029 +#define ELOOP 1030 +#define EMFILE 1031 +#define EMLINK 1032 +#define EMSGSIZE 1034 +#define EMULTIHOP 1035 +#define ENAMETOOLONG 1036 +#define ENETDOWN 1037 +#define ENETRESET 1038 +#define ENETUNREACH 1039 +#define ENFILE 1040 +#define ENOBUFS 1041 +#define ENODEV 1042 +#define ENOENT 1043 +#define ENOEXEC 1044 +#define ENOLCK 1045 +#define ENOLINK 1046 +#define ENOMEM 1047 +#define ENOMSG 1048 +#define ENOPROTOOPT 1049 +#define ENOSPC 1050 +#define ENOSYS 1051 +#define ENOTCONN 1052 +#define ENOTDIR 1053 +#define ENOTEMPTY 1054 +#define ENOTRECOVERABLE 1055 +#define ENOTSOCK 1056 +#define ENOTSUP 1057 +#define ENOTTY 1058 +#define ENXIO 1059 +#define EOPNOTSUPP 1060 +#define EOVERFLOW 1061 +#define EOWNERDEAD 1062 +#define EPERM 1063 +#define EPIPE 1064 +#define EPROTO 1065 +#define EPROTONOSUPPORT 1066 +#define EPROTOTYPE 1067 +#define EROFS 1068 +#define ESPIPE 1069 +#define ESRCH 1070 +#define ESTALE 1071 +#define ETIMEDOUT 1072 +#define ETXTBSY 1073 +#define EWOULDBLOCK EAGAIN +#define EXDEV 1075 +#define ENODATA 1076 +#define ETIME 1077 +#define ENOKEY 1078 +#define ESHUTDOWN 1079 +#define EHOSTDOWN 1080 +#define EBADFD 1081 +#define ENOMEDIUM 1082 +#define ENOTBLK 1083 +#define ENONET 1084 +#define EPFNOSUPPORT 1085 +#define ESOCKTNOSUPPORT 1086 +#define ESTRPIPE 1087 +#define EREMOTEIO 1088 +#define ERFKILL 1089 +#define EBADR 1090 +#define EUNATCH 1091 +#define EMEDIUMTYPE 1092 +#define EREMOTE 1093 +#define EKEYREJECTED 1094 +#define EUCLEAN 1095 +#define EBADSLT 1096 +#define ENOANO 1097 +#define ENOCSI 1098 +#define ENOSTR 1099 +#define ETOOMANYREFS 1100 +#define ENOPKG 1101 +#define EKEYREVOKED 1102 +#define EXFULL 1103 +#define ELNRNG 1104 +#define ENOTUNIQ 1105 +#define ERESTART 1106 +#define EUSERS 1107 +#define ECHRNG 1108 +#define ELIBBAD 1109 +#define EL2HLT 1110 +#define EL3HLT 1111 +#define EKEYEXPIRED 1112 +#define ECOMM 1113 +#define EBADE 1114 +#define EHWPOISON 1115 +#define EBADRQC 1116 + +#define EIEIO 1524152434 + +#endif // _ABIBITS_ERRNO_H diff --git a/lib/mlibc/abis/ironclad/fcntl.h b/lib/mlibc/abis/ironclad/fcntl.h new file mode 100644 index 0000000..10188de --- /dev/null +++ b/lib/mlibc/abis/ironclad/fcntl.h @@ -0,0 +1,79 @@ +#ifndef _ABIBITS_FCNTL_H +#define _ABIBITS_FCNTL_H + +// Flags supported by the kernel. +#define O_ACCMODE 0b000011 +#define O_RDONLY 00000001 +#define O_WRONLY 0b000010 +#define O_RDWR 0b000011 +#define O_APPEND 0b000100 +#define O_CLOEXEC 0b001000 +#define O_NOFOLLOW 0b010000 +#define O_NONBLOCK 0b100000 + +// Flags emulated by userland, we just have to make sure they dont overlap with +// kernel flags. +#define O_CREAT 0b0010000000 +#define O_EXCL 0b0100000000 +#define O_TRUNC 0b1000000000 + +// Stubbed flags, the value really doesnt matter as long as they dont overlap +// with usable ones. +// Implemented here as some software needs them to compile. +#define O_SEARCH 0b000000000010000000000 +#define O_EXEC 0b000000000100000000000 +#define O_NOCTTY 0b000000001000000000000 +#define O_DSYNC 0b000000010000000000000 +#define O_RSYNC 0b000000100000000000000 +#define O_SYNC 0b000001000000000000000 +#define O_PATH 0b000010000000000000000 +#define O_DIRECTORY 0b000100000000000000000 +#define O_LARGEFILE 0b001000000000000000000 +#define O_NOATIME 0b010000000000000000000 +#define O_TMPFILE 0b100000000000000000000 + +// Fcntl flags. +#define FD_CLOEXEC 1 +#define F_DUPFD 1 +#define F_DUPFD_CLOEXEC 2 +#define F_GETFD 3 +#define F_SETFD 4 +#define F_GETFL 5 +#define F_SETFL 6 +#define F_GETPIPE_SZ 7 +#define F_SETPIPE_SZ 8 +#define F_GETLK 9 +#define F_SETLK 10 +#define F_SETLKW 11 + +#define F_RDLCK 1 +#define F_UNLCK 2 +#define F_WRLCK 3 + +// Stubbed fcntl flags. +#define F_GETOWN 10 +#define F_SETOWN 11 + +#define F_SEAL_SHRINK 0x0002 +#define F_SEAL_GROW 0x0004 +#define F_SEAL_WRITE 0x0008 +#define F_SEAL_SEAL 0x0010 +#define F_ADD_SEALS 1033 +#define F_GET_SEALS 1034 + +// At flags. +#define AT_REMOVEDIR 500 +#define AT_EACCESS 512 +#define AT_FDCWD 0x7FFFFFFF +#define AT_EMPTY_PATH 1 +#define AT_SYMLINK_FOLLOW 0 +#define AT_SYMLINK_NOFOLLOW 2 + +#define POSIX_FADV_NORMAL 1 +#define POSIX_FADV_SEQUENTIAL 2 +#define POSIX_FADV_NOREUSE 3 +#define POSIX_FADV_DONTNEED 4 +#define POSIX_FADV_WILLNEED 5 +#define POSIX_FADV_RANDOM 6 + +#endif // _ABIBITS_FCNTL_H diff --git a/lib/mlibc/abis/ironclad/fsblkcnt_t.h b/lib/mlibc/abis/ironclad/fsblkcnt_t.h new file mode 100644 index 0000000..0d74456 --- /dev/null +++ b/lib/mlibc/abis/ironclad/fsblkcnt_t.h @@ -0,0 +1,8 @@ +#ifndef _ABIBITS_FSBLKCNT_T_H +#define _ABIBITS_FSBLKCNT_T_H + +#include + +typedef __mlibc_uint64 fsblkcnt_t; + +#endif /* _ABIBITS_FSBLKCNT_T_H */ diff --git a/lib/mlibc/abis/ironclad/fsfilcnt_t.h b/lib/mlibc/abis/ironclad/fsfilcnt_t.h new file mode 100644 index 0000000..1abda9a --- /dev/null +++ b/lib/mlibc/abis/ironclad/fsfilcnt_t.h @@ -0,0 +1,8 @@ +#ifndef _ABIBITS_FSFILCNT_T_H +#define _ABIBITS_FSFILCNT_T_H + +#include + +typedef __mlibc_uint64 fsfilcnt_t; + +#endif /* _ABIBITS_FSFILCNT_T_H */ diff --git a/lib/mlibc/abis/ironclad/gid_t.h b/lib/mlibc/abis/ironclad/gid_t.h new file mode 100644 index 0000000..252321f --- /dev/null +++ b/lib/mlibc/abis/ironclad/gid_t.h @@ -0,0 +1,6 @@ +#ifndef _ABIBITS_GID_T_H +#define _ABIBITS_GID_T_H + +typedef unsigned int gid_t; + +#endif // _ABIBITS_GID_T_H diff --git a/lib/mlibc/abis/ironclad/in.h b/lib/mlibc/abis/ironclad/in.h new file mode 100644 index 0000000..3c736e3 --- /dev/null +++ b/lib/mlibc/abis/ironclad/in.h @@ -0,0 +1,168 @@ +#ifndef _ABIBITS_IN_H +#define _ABIBITS_IN_H + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct in_addr { + in_addr_t s_addr; +}; + +struct sockaddr_in { + sa_family_t sin_family; + in_port_t sin_port; + struct in_addr sin_addr; + uint8_t pad[8]; +}; +#define sin_zero pad /* for BSD Unix compatibility */ + +struct in6_addr { + union { + uint8_t __s6_addr[16]; + uint16_t __s6_addr16[8]; + uint32_t __s6_addr32[4]; + } __in6_union; +}; +#define s6_addr __in6_union.__s6_addr +#define s6_addr16 __in6_union.__s6_addr16 +#define s6_addr32 __in6_union.__s6_addr32 + +struct in6_pktinfo { + struct in6_addr ipi6_addr; + uint32_t ipi6_ifindex; +}; + +struct sockaddr_in6 { + sa_family_t sin6_family; + in_port_t sin6_port; + uint32_t sin6_flowinfo; + struct in6_addr sin6_addr; + uint32_t sin6_scope_id; +}; + +struct ipv6_mreq { + struct in6_addr ipv6mr_multiaddr; + unsigned ipv6mr_interface; +}; + +struct ip_mreq { + struct in_addr imr_multiaddr; + struct in_addr imr_interface; +}; + +struct ip_mreq_source { + struct in_addr imr_multiaddr; + struct in_addr imr_interface; + struct in_addr imr_sourceaddr; +}; + +struct ip_mreqn { + struct in_addr imr_multiaddr; + struct in_addr imr_address; + int imr_ifindex; +}; + +struct in_pktinfo { + unsigned int ipi_ifindex; + struct in_addr ipi_spec_dst; + struct in_addr ipi_addr; +}; + +struct group_source_req { + uint32_t gsr_interface; + struct sockaddr_storage gsr_group; + struct sockaddr_storage gsr_source; +}; + +#ifdef __cplusplus +} +#endif + +#define IN6ADDR_ANY_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } } +#define IN6ADDR_LOOPBACK_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 } } } + +#define IPPROTO_IP 1 +#define IPPROTO_IPV6 2 +#define IPPROTO_ICMP 3 +#define IPPROTO_RAW 4 +#define IPPROTO_TCP 5 +#define IPPROTO_UDP 6 +#define IPPROTO_IGMP 7 +#define IPPROTO_IPIP 8 +#define IPPROTO_DCCP 33 +#define IPPROTO_ROUTING 43 +#define IPPROTO_GRE 47 +#define IPPROTO_ESP 50 +#define IPPROTO_AH 51 +#define IPPROTO_ICMPV6 58 +#define IPPROTO_DSTOPTS 60 +#define IPPROTO_COMP 108 +#define IPPROTO_SCTP 132 +#define IPPROTO_UDPLITE 136 +#define IPPROTO_MAX 256 + +#define INADDR_ANY ((in_addr_t)0x00000000) +#define INADDR_BROADCAST ((in_addr_t)0xffffffff) +#define INADDR_LOOPBACK ((in_addr_t)0x7f000001) +#define INADDR_NONE ((in_addr_t)0xffffffff) + +#define INET_ADDRSTRLEN 16 + +#define INET6_ADDRSTRLEN 46 + +#define IPV6_JOIN_GROUP 1 +#define IPV6_LEAVE_GROUP 2 +#define IPV6_MULTICAST_HOPS 3 +#define IPV6_MULTICAST_IF 4 +#define IPV6_MULTICAST_LOOP 5 +#define IPV6_UNICAST_HOPS 6 +#define IPV6_V6ONLY 7 +#define IPV6_PMTUDISC_DONT 8 +#define IPV6_PMTUDISC_DO 9 +#define IPV6_MTU 10 +#define IPV6_2292PKTOPTIONS 11 +#define IPV6_MTU_DISCOVER 23 +#define IPV6_RECVERR 25 +#define IPV6_RECVPKTINFO 49 +#define IPV6_PKTINFO 50 +#define IPV6_RECVHOPLIMIT 51 +#define IPV6_HOPLIMIT 52 +#define IPV6_TCLASS 67 + +#define IP_TOS 1 +#define IP_TTL 2 +#define IP_OPTIONS 4 +#define IP_PMTUDISC_OMIT 5 +#define IP_PKTINFO 8 +#define IP_PKTOPTIONS 9 +#define IP_MTU_DISCOVER 10 +#define IP_RECVERR 11 +#define IP_RECVTTL 12 +#define IP_UNICAST_IF 13 +#define IP_MTU 14 + +#define IP_DEFAULT_MULTICAST_TTL 1 +#define IP_MULTICAST_IF 32 +#define IP_MULTICAST_TTL 33 +#define IP_MULTICAST_LOOP 34 +#define IP_ADD_MEMBERSHIP 35 +#define IP_DROP_MEMBERSHIP 36 +#define IP_UNBLOCK_SOURCE 37 +#define IP_BLOCK_SOURCE 38 +#define IP_ADD_SOURCE_MEMBERSHIP 39 +#define IP_DROP_SOURCE_MEMBERSHIP 40 +#define MCAST_JOIN_SOURCE_GROUP 46 +#define MCAST_LEAVE_SOURCE_GROUP 47 + +#define IP_PMTUDISC_DONT 0 +#define IP_PMTUDISC_DO 2 + +#define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP +#define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP + +#endif // _ABIBITS_IN_H diff --git a/lib/mlibc/abis/ironclad/ino_t.h b/lib/mlibc/abis/ironclad/ino_t.h new file mode 100644 index 0000000..264d888 --- /dev/null +++ b/lib/mlibc/abis/ironclad/ino_t.h @@ -0,0 +1,7 @@ +#ifndef _ABIBITS_INO_T_H +#define _ABIBITS_INO_T_H + +// TODO: use (u)int64_t? +typedef long ino_t; + +#endif // _ABIBITS_INO_T_H diff --git a/lib/mlibc/abis/ironclad/inotify.h b/lib/mlibc/abis/ironclad/inotify.h new file mode 100644 index 0000000..38c9c77 --- /dev/null +++ b/lib/mlibc/abis/ironclad/inotify.h @@ -0,0 +1,7 @@ +#ifndef _ABIBITS_INOTIFY_H +#define _ABIBITS_INOTIFY_H + +#define IN_CLOEXEC 1 +#define IN_NONBLOCK 2 + +#endif // _ABIBITS_INOTIFY_H diff --git a/lib/mlibc/abis/ironclad/ioctls.h b/lib/mlibc/abis/ironclad/ioctls.h new file mode 100644 index 0000000..c39abb5 --- /dev/null +++ b/lib/mlibc/abis/ironclad/ioctls.h @@ -0,0 +1,13 @@ +#ifndef _ABIBITS_IOCTLS_H +#define _ABIBITS_IOCTLS_H + +#define SIOCPROTOPRIVATE 0x89E0 +#define SIOCGIFNAME 0x8910 +#define SIOCGIFCONF 0x8912 +#define SIOCGIFFLAGS 0x8913 +#define SIOCSIFFLAGS 0x8914 +#define SIOCGIFINDEX 0x8933 +#define SIOCATMARK 0x8905 +#define SIOCGIFHWADDR 0x8927 + +#endif /* _ABIBITS_IOCTLS_H */ diff --git a/lib/mlibc/abis/ironclad/limits.h b/lib/mlibc/abis/ironclad/limits.h new file mode 100644 index 0000000..6aac622 --- /dev/null +++ b/lib/mlibc/abis/ironclad/limits.h @@ -0,0 +1,14 @@ +#ifndef _ABIBITS_LIMITS_H +#define _ABIBITS_LIMITS_H + +#define IOV_MAX 1024 + +// Niceness related +#define NZERO 20 + +// Maximum hostname length, posix defines it as 255 +#define HOST_NAME_MAX 255 + +#define OPEN_MAX 256 + +#endif //_ABIBITS_LIMITS_H diff --git a/lib/mlibc/abis/ironclad/mode_t.h b/lib/mlibc/abis/ironclad/mode_t.h new file mode 100644 index 0000000..77f75a9 --- /dev/null +++ b/lib/mlibc/abis/ironclad/mode_t.h @@ -0,0 +1,6 @@ +#ifndef _ABIBITS_MODE_T_H +#define _ABIBITS_MODE_T_H + +typedef int mode_t; + +#endif // _ABIBITS_MODE_T_H diff --git a/lib/mlibc/abis/ironclad/mqueue.h b/lib/mlibc/abis/ironclad/mqueue.h new file mode 100644 index 0000000..f18210c --- /dev/null +++ b/lib/mlibc/abis/ironclad/mqueue.h @@ -0,0 +1,20 @@ +#ifndef _ABIBITS_MQUEUE_H +#define _ABIBITS_MQUEUE_H + +#ifdef __cplusplus +extern "C" { +#endif + +struct mq_attr { + long mq_flags; + long mq_maxmsg; + long mq_msgsize; + long mq_curmsgs; + long __pad[4]; +}; + +#ifdef __cplusplus +} +#endif + +#endif /* _ABIBITS_MQUEUE_H */ diff --git a/lib/mlibc/abis/ironclad/msg.h b/lib/mlibc/abis/ironclad/msg.h new file mode 100644 index 0000000..5e890c0 --- /dev/null +++ b/lib/mlibc/abis/ironclad/msg.h @@ -0,0 +1,39 @@ +#ifndef _ABIBITS_MSG_H +#define _ABIBITS_MSG_H + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(__i386__) +typedef __mlibc_uint64 msglen_t; +typedef __mlibc_uint64 msgqnum_t; +#else +typedef unsigned long msglen_t; +typedef unsigned long msgqnum_t; +#endif + +struct msqid_ds { + struct ipc_perm msg_perm; + time_t msg_stime; + time_t msg_rtime; + 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]; +}; + +#ifdef __cplusplus +} +#endif + +#endif /* _ABIBITS_MSG_H */ + diff --git a/lib/mlibc/abis/ironclad/nlink_t.h b/lib/mlibc/abis/ironclad/nlink_t.h new file mode 100644 index 0000000..30e178c --- /dev/null +++ b/lib/mlibc/abis/ironclad/nlink_t.h @@ -0,0 +1,6 @@ +#ifndef _ABIBITS_NLINK_T_H +#define _ABIBITS_NLINK_T_H + +typedef int nlink_t; + +#endif // _ABIBITS_NLINK_T_H diff --git a/lib/mlibc/abis/ironclad/packet.h b/lib/mlibc/abis/ironclad/packet.h new file mode 100644 index 0000000..ee1a424 --- /dev/null +++ b/lib/mlibc/abis/ironclad/packet.h @@ -0,0 +1,6 @@ +#ifndef _ABIBITS_PACKET_H +#define _ABIBITS_PACKET_H + +#define PACKET_HOST 0 + +#endif // _ABIBITS_PACKET_H diff --git a/lib/mlibc/abis/ironclad/pid_t.h b/lib/mlibc/abis/ironclad/pid_t.h new file mode 100644 index 0000000..5ffbd06 --- /dev/null +++ b/lib/mlibc/abis/ironclad/pid_t.h @@ -0,0 +1,6 @@ +#ifndef _ABIBITS_PID_T_H +#define _ABIBITS_PID_T_H + +typedef int pid_t; + +#endif // _ABIBITS_PID_T_H diff --git a/lib/mlibc/abis/ironclad/poll.h b/lib/mlibc/abis/ironclad/poll.h new file mode 100644 index 0000000..e0fe1a5 --- /dev/null +++ b/lib/mlibc/abis/ironclad/poll.h @@ -0,0 +1,16 @@ +#ifndef _ABIBITS_POLL_H +#define _ABIBITS_POLL_H + +#define POLLIN 0x01 +#define POLLOUT 0x02 +#define POLLPRI 0x04 +#define POLLHUP 0x08 +#define POLLERR 0x10 +#define POLLRDHUP 0x20 +#define POLLNVAL 0x40 +#define POLLWRNORM 0x80 +#define POLLRDNORM 0x100 +#define POLLWRBAND 0x200 +#define POLLRDBAND 0x400 + +#endif // _ABIBITS_POLL_H diff --git a/lib/mlibc/abis/ironclad/ptrace.h b/lib/mlibc/abis/ironclad/ptrace.h new file mode 100644 index 0000000..6f35eac --- /dev/null +++ b/lib/mlibc/abis/ironclad/ptrace.h @@ -0,0 +1,56 @@ +#ifndef _ABIBITS_PTRACE_H +#define _ABIBITS_PTRACE_H + +#define PTRACE_PEEKTEXT 1 +#define PTRACE_PEEKDATA 2 +#define PTRACE_PEEKUSER 3 +#define PTRACE_POKETEXT 4 +#define PTRACE_POKEDATA 5 +#define PTRACE_CONT 7 +#define PTRACE_KILL 8 +#define PTRACE_SINGLESTEP 9 +#define PTRACE_GETREGS 14 +#define PTRACE_SETREGS 15 +#define PTRACE_ATTACH 16 +#define PTRACE_DETACH 17 +#define PTRACE_GETFPXREGS 18 +#define PTRACE_SETFPXREGS 19 +#define PTRACE_GETFPREGS 20 +#define PTRACE_SYSCALL 24 +#define PTRACE_SETOPTIONS 0x4200 +#define PTRACE_GETEVENTMSG 0x4201 +#define PTRACE_GETSIGINFO 0x4202 +#define PTRACE_SETSIGINFO 0x4203 +#define PTRACE_GETREGSET 0x4204 +#define PTRACE_SETREGSET 0x4205 +#define PTRACE_SEIZE 0x4206 +#define PTRACE_INTERRUPT 0x4207 +#define PTRACE_LISTEN 0x4208 +#define PTRACE_PEEKSIGINFO 0x4209 +#define PTRACE_GETSIGMASK 0x420A +#define PTRACE_SETSIGMASK 0x420B +#define PTRACE_SECCOMP_GET_FILTER 0x420C + +#define PTRACE_CE_O_TRACESYSGOOD 0x00000001 +#define PTRACE_O_TRACEFORK 0x00000002 +#define PTRACE_O_TRACEVFORK 0x00000004 +#define PTRACE_O_TRACECLONE 0x00000008 +#define PTRACE_O_TRACEEXEC 0x00000010 +#define PTRACE_O_TRACEVFORKDONE 0x00000020 +#define PTRACE_O_TRACEEXIT 0x00000040 +#define PTRACE_O_TRACESECCOMP 0x00000080 +#define PTRACE_O_EXITKILL 0x00100000 +#define PTRACE_O_SUSPEND_SECCOMP 0x00200000 +#define PTRACE_O_MASK 0x003000ff + +#define PTRACE_EVENT_FORK 1 +#define PTRACE_EVENT_VFORK 2 +#define PTRACE_EVENT_CLONE 3 +#define PTRACE_EVENT_EXEC 4 +#define PTRACE_EVENT_VFORK_DONE 5 +#define PTRACE_EVENT_EXIT 6 +#define PTRACE_EVENT_SECCOMP 7 + +#define PTRACE_PEEKSIGINFO_SHARED 1 + +#endif // _ABIBITS_PTRACE_H diff --git a/lib/mlibc/abis/ironclad/reboot.h b/lib/mlibc/abis/ironclad/reboot.h new file mode 100644 index 0000000..aadc18f --- /dev/null +++ b/lib/mlibc/abis/ironclad/reboot.h @@ -0,0 +1,12 @@ +#ifndef _ABIBITS_REBOOT_H +#define _ABIBITS_REBOOT_H + +#define RB_AUTOBOOT 0x01234567 +#define RB_HALT_SYSTEM 0xcdef0123 +#define RB_ENABLE_CAD 0x89abcdef +#define RB_DISABLE_CAD 0 +#define RB_POWER_OFF 0x4321fedc +#define RB_SW_SUSPEND 0xd000fce2 +#define RB_KEXEC 0x45584543 + +#endif // _ABIBITS_REBOOT_H diff --git a/lib/mlibc/abis/ironclad/resource.h b/lib/mlibc/abis/ironclad/resource.h new file mode 100644 index 0000000..927588b --- /dev/null +++ b/lib/mlibc/abis/ironclad/resource.h @@ -0,0 +1,53 @@ +#ifndef _ABIBITS_RESOURCE_H +#define _ABIBITS_RESOURCE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#define RUSAGE_SELF 1 +#define RUSAGE_CHILDREN 2 + +#define RLIMIT_CORE 1 +#define RLIMIT_CPU 2 +#define RLIMIT_DATA 3 +#define RLIMIT_FSIZE 4 +#define RLIMIT_NOFILE 5 +#define RLIMIT_STACK 6 +#define RLIMIT_AS 7 +#define RLIMIT_MEMLOCK 8 +#define RLIMIT_RSS 9 +#define RLIMIT_NPROC 10 +#define RLIMIT_LOCKS 11 +#define RLIMIT_SIGPENDING 12 +#define RLIMIT_MSGQUEUE 13 +#define RLIMIT_NICE 14 +#define RLIMIT_RTPRIO 15 +#define RLIMIT_NLIMITS 16 + +struct rusage { + struct timeval ru_utime; + struct timeval ru_stime; + long int ru_maxrss; + long int ru_ixrss; + long int ru_idrss; + long int ru_isrss; + long int ru_minflt; + long int ru_majflt; + long int ru_nswap; + long int ru_inblock; + long int ru_oublock; + long int ru_msgsnd; + long int ru_msgrcv; + long int ru_nsignals; + long int ru_nvcsw; + long int ru_nivcsw; +}; + +#ifdef __cplusplus +} +#endif + +#endif // _ABIBITS_RESOURCE_H diff --git a/lib/mlibc/abis/ironclad/seek-whence.h b/lib/mlibc/abis/ironclad/seek-whence.h new file mode 100644 index 0000000..617b6f4 --- /dev/null +++ b/lib/mlibc/abis/ironclad/seek-whence.h @@ -0,0 +1,8 @@ +#ifndef _ABIBITS_SEEK_WHENCE_H +#define _ABIBITS_SEEK_WHENCE_H + +#define SEEK_SET 1 +#define SEEK_CUR 2 +#define SEEK_END 4 + +#endif // _ABIBITS_SEEK_WHENCE_H diff --git a/lib/mlibc/abis/ironclad/shm.h b/lib/mlibc/abis/ironclad/shm.h new file mode 100644 index 0000000..93fb01b --- /dev/null +++ b/lib/mlibc/abis/ironclad/shm.h @@ -0,0 +1,21 @@ +#ifndef _ABIBITS_SHM_H +#define _ABIBITS_SHM_H + +#ifdef __cplusplus +extern "C" { +#endif + +struct shm_info { + int used_ids; + unsigned long shm_tot; + unsigned long shm_rss; + unsigned long shm_swp; + unsigned long swap_attempts; + unsigned long swap_successes; +}; + +#ifdef __cplusplus +} +#endif + +#endif /* _ABIBITS_SHM_H */ diff --git a/lib/mlibc/abis/ironclad/signal.h b/lib/mlibc/abis/ironclad/signal.h new file mode 100644 index 0000000..2d20315 --- /dev/null +++ b/lib/mlibc/abis/ironclad/signal.h @@ -0,0 +1,192 @@ +#ifndef _ABIBITS_SIGNAL_H +#define _ABIBITS_SIGNAL_H + +#include +#include +#include + +union sigval { + int sival_int; + void *sival_ptr; +}; + +typedef struct { + int si_signo; + int si_code; + int si_errno; + pid_t si_pid; + uid_t si_uid; + void *si_addr; + int si_status; + union sigval si_value; +} siginfo_t; + +#ifdef __cplusplus +extern "C" { +#endif + +// Argument for signal() +typedef void (*__sighandler) (int); + +#define SIG_ERR ((__sighandler)(void *)(-1)) +#define SIG_DFL ((__sighandler)(void *)(-2)) +#define SIG_IGN ((__sighandler)(void *)(-3)) + +#define SIGHUP 1 +#define SIGINT 2 +#define SIGQUIT 3 +#define SIGILL 4 +#define SIGTRAP 5 +#define SIGABRT 6 +#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 SIGIO +#define SIGPWR 30 +#define SIGSYS 31 +#define SIGRTMIN 32 +#define SIGRTMAX 33 +#define SIGCANCEL SIGSYS + +// siginfo->si_info constants +// SIGBUS +#define BUS_ADRALN 1 +#define BUS_ADRERR 2 +#define BUS_OBJERR 3 + +// SIGILL +#define ILL_ILLOPC 1 +#define ILL_ILLOPN 2 +#define ILL_ILLADR 3 +#define ILL_ILLTRP 4 +#define ILL_PRVOPC 5 +#define ILL_PRVREG 6 +#define ILL_COPROC 7 +#define ILL_BADSTK 8 +#define ILL_BADIADDR 9 + +// SIGSEGV +#define SEGV_MAPERR 1 +#define SEGV_ACCERR 2 + +// TODO: replace this by uint64_t +typedef long sigset_t; + +#define SIGUNUSED SIGSYS + +// constants for sigprocmask() +#define SIG_BLOCK 1 +#define SIG_UNBLOCK 2 +#define SIG_SETMASK 3 + +#define SA_NOCLDSTOP (1 << 0) +#define SA_ONSTACK (1 << 1) +#define SA_RESETHAND (1 << 2) +#define SA_RESTART (1 << 3) +#define SA_SIGINFO (1 << 4) +#define SA_NOCLDWAIT (1 << 5) +#define SA_NODEFER (1 << 6) + +#define MINSIGSTKSZ 2048 +#define SIGSTKSZ 8192 +#define SS_ONSTACK 1 +#define SS_DISABLE 2 + +typedef struct __stack { + void *ss_sp; + size_t ss_size; + int ss_flags; +} stack_t; + +// constants for sigev_notify of struct sigevent +#define SIGEV_NONE 1 +#define SIGEV_SIGNAL 2 +#define SIGEV_THREAD 3 + +#define SI_ASYNCNL (-60) +#define SI_TKILL (-6) +#define SI_SIGIO (-5) +#define SI_ASYNCIO (-4) +#define SI_MESGQ (-3) +#define SI_TIMER (-2) +#define SI_QUEUE (-1) +#define SI_USER 0 +#define SI_KERNEL 128 + +#define NSIG 65 +#define _NSIG NSIG + +#define CLD_EXITED 1 +#define CLD_KILLED 2 +#define CLD_DUMPED 3 +#define CLD_TRAPPED 4 +#define CLD_STOPPED 5 +#define CLD_CONTINUED 6 + +struct sigevent { + int sigev_notify; + int sigev_signo; + union sigval sigev_value; + void (*sigev_notify_function)(union sigval); + // MISSING: sigev_notify_attributes +}; + +struct sigaction { + union { + void (*sa_handler)(int); + void (*sa_sigaction)(int, siginfo_t *, void *); + }; + sigset_t sa_mask; + int sa_flags; +}; + +#if defined(__x86_64__) || defined(__aarch64__) +// TODO: This is wrong for AArch64. + +typedef struct { + unsigned long oldmask; + unsigned long gregs[16]; + unsigned long pc, pr, sr; + unsigned long gbr, mach, macl; + unsigned long fpregs[16]; + unsigned long xfpregs[16]; + unsigned int fpscr, fpul, ownedfp; +} mcontext_t; + +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; + +#else +#error "Missing architecture specific code." +#endif + +#ifdef __cplusplus +} +#endif + +#endif // _ABIBITS_SIGNAL_H diff --git a/lib/mlibc/abis/ironclad/socket.h b/lib/mlibc/abis/ironclad/socket.h new file mode 100644 index 0000000..48b8178 --- /dev/null +++ b/lib/mlibc/abis/ironclad/socket.h @@ -0,0 +1,165 @@ +#ifndef _ABIBITS_SOCKET_H +#define _ABIBITS_SOCKET_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef unsigned int sa_family_t; + +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 sockaddr_storage { + sa_family_t ss_family; + char __padding[128 - sizeof(sa_family_t)]; +}; + +struct mmsghdr { + struct msghdr msg_hdr; + unsigned int msg_len; +}; + +struct cmsghdr { + socklen_t cmsg_len; + int cmsg_level; + int cmsg_type; +}; + +#ifdef __cplusplus +} +#endif + +#define SCM_RIGHTS 1 +#define SCM_TIMESTAMP SO_TIMESTAMP +#define SCM_TIMESTAMPNS SO_TIMESTAMPNS + +//MISSING: CMSG_DATA, CMSG_NXTHDR, CMSG_FIRSTHDR + +#define SCM_CREDENTIALS 0x02 + +#define SOCK_DGRAM 1 +#define SOCK_RAW 2 +#define SOCK_SEQPACKET 3 +#define SOCK_STREAM 4 +#define SOCK_DCCP 5 +#define SOCK_NONBLOCK 0x10000 +#define SOCK_CLOEXEC 0x20000 +#define SOCK_RDM 0x40000 + +#define SOL_SOCKET 1 +#define SOL_IPV6 41 +#define SOL_PACKET 263 +#define SOL_NETLINK 270 + +#define SO_ACCEPTCONN 1 +#define SO_BROADCAST 2 +#define SO_DEBUG 3 +#define SO_DONTROUTE 4 +#define SO_ERROR 5 +#define SO_KEEPALIVE 6 +#define SO_LINGER 7 +#define SO_OOBINLINE 8 +#define SO_RCVBUF 9 +#define SO_RCVLOWAT 10 +#define SO_RCVTIMEO 11 +#define SO_REUSEADDR 12 +#define SO_SNDBUF 13 +#define SO_SNDLOWAT 14 +#define SO_SNDTIMEO 15 +#define SO_TYPE 16 +#define SO_SNDBUFFORCE 17 +#define SO_PEERCRED 18 +#define SO_ATTACH_FILTER 19 +#define SO_PASSCRED 20 +#define SO_RCVBUFFORCE 21 +#define SO_DETACH_FILTER 22 +#define SO_PROTOCOL 23 +#define SO_REUSEPORT 24 +#define SO_TIMESTAMP 25 +#define SO_PEERSEC 26 +#define SO_BINDTODEVICE 27 +#define SO_DOMAIN 28 +#define SO_PASSSEC 29 +#define SO_TIMESTAMPNS 30 +#define SO_PRIORITY 31 +#define SO_MARK 32 + +#define SOMAXCONN 1 + +#define MSG_CTRUNC 0x1 +#define MSG_DONTROUTE 0x2 +#define MSG_EOR 0x4 +#define MSG_OOB 0x8 +#define MSG_NOSIGNAL 0x10 +#define MSG_PEEK 0x20 +#define MSG_TRUNC 0x40 +#define MSG_WAITALL 0x80 +#define MSG_FIN 0x200 +#define MSG_CONFIRM 0x800 + +// Linux extensions. +#define MSG_DONTWAIT 0x1000 +#define MSG_CMSG_CLOEXEC 0x2000 +#define MSG_MORE 0x4000 +#define MSG_FASTOPEN 0x20000000 + +// GNU (?) extension: Protocol family constants. + +#define PF_INET 1 +#define PF_INET6 2 +#define PF_UNIX 3 +#define PF_LOCAL 3 +#define PF_UNSPEC 4 +#define PF_NETLINK 5 +#define PF_BRIDGE 6 +#define PF_APPLETALK 7 +#define PF_BLUETOOTH 8 +#define PF_DECnet 9 +#define PF_IPX 10 +#define PF_ISDN 11 +#define PF_SNA 12 +#define PF_PACKET 13 +#define PF_AX25 14 +#define PF_NETROM 15 +#define PF_ROSE 16 +#define PF_TIPC 30 +#define PF_ALG 38 +#define PF_MAX 46 + +#define AF_INET PF_INET +#define AF_INET6 PF_INET6 +#define AF_UNIX PF_UNIX +#define AF_LOCAL PF_LOCAL +#define AF_UNSPEC PF_UNSPEC +#define AF_NETLINK PF_NETLINK +#define AF_BRIDGE PF_BRIDGE +#define AF_APPLETALK PF_APPLETALK +#define AF_BLUETOOTH PF_BLUETOOTH +#define AF_DECnet PF_DECnet +#define AF_IPX PF_IPX +#define AF_ISDN PF_ISDN +#define AF_SNA PF_SNA +#define AF_PACKET PF_PACKET +#define AF_PACKET PF_PACKET +#define AF_AX25 PF_AX25 +#define AF_NETROM PF_NETROM +#define AF_ROSE PF_ROSE +#define AF_TIPC PF_TIPC +#define AF_ALG PF_ALG +#define AF_MAX PF_MAX + +#define SHUT_RD 1 +#define SHUT_RDWR 2 +#define SHUT_WR 3 +#endif diff --git a/lib/mlibc/abis/ironclad/socklen_t.h b/lib/mlibc/abis/ironclad/socklen_t.h new file mode 100644 index 0000000..190e5f9 --- /dev/null +++ b/lib/mlibc/abis/ironclad/socklen_t.h @@ -0,0 +1,6 @@ +#ifndef _ABIBITS_SOCKLEN_T_H +#define _ABIBITS_SOCKLEN_T_H + +typedef unsigned socklen_t; + +#endif /* _ABIBITS_SOCKLEN_T_H */ diff --git a/lib/mlibc/abis/ironclad/stat.h b/lib/mlibc/abis/ironclad/stat.h new file mode 100644 index 0000000..3f55970 --- /dev/null +++ b/lib/mlibc/abis/ironclad/stat.h @@ -0,0 +1,69 @@ +#ifndef _ABIBITS_STAT_H +#define _ABIBITS_STAT_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define S_IFMT 0x0F000 +#define S_IFBLK 0x06000 +#define S_IFCHR 0x02000 +#define S_IFIFO 0x01000 +#define S_IFREG 0x08000 +#define S_IFDIR 0x04000 +#define S_IFLNK 0x0A000 +#define S_IFSOCK 0x0C000 + +#define S_IRWXU 0700 +#define S_IRUSR 0400 +#define S_IWUSR 0200 +#define S_IXUSR 0100 +#define S_IRWXG 070 +#define S_IRGRP 040 +#define S_IWGRP 020 +#define S_IXGRP 010 +#define S_IRWXO 07 +#define S_IROTH 04 +#define S_IWOTH 02 +#define S_IXOTH 01 +#define S_ISUID 04000 +#define S_ISGID 02000 +#define S_ISVTX 01000 + +#define S_IREAD S_IRUSR +#define S_IWRITE S_IWUSR +#define S_IEXEC S_IXUSR + +#ifdef __cplusplus +extern "C" { +#endif + +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; + off_t st_size; + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; + blksize_t st_blksize; + blkcnt_t st_blocks; +}; + +#ifdef __cplusplus +} +#endif + +#endif // _ABIBITS_STAT_H diff --git a/lib/mlibc/abis/ironclad/statfs.h b/lib/mlibc/abis/ironclad/statfs.h new file mode 100644 index 0000000..60c977f --- /dev/null +++ b/lib/mlibc/abis/ironclad/statfs.h @@ -0,0 +1,28 @@ +#ifndef _ABIBITS_STATFS_H +#define _ABIBITS_STATFS_H + +#include +#include + +typedef struct __mlibc_fsid { + int __val[2]; +} fsid_t; + +struct statfs { + unsigned long f_type; + unsigned long f_bsize; + fsblkcnt_t f_blocks; + fsblkcnt_t f_bfree; + fsblkcnt_t f_bavail; + + fsfilcnt_t f_files; + fsfilcnt_t f_ffree; + fsid_t f_fsid; + unsigned long f_namelen; + unsigned long f_frsize; + unsigned long f_flags; + unsigned long __f_spare[4]; +}; + +#endif /* _ABIBITS_STATFS_H */ + diff --git a/lib/mlibc/abis/ironclad/statvfs.h b/lib/mlibc/abis/ironclad/statvfs.h new file mode 100644 index 0000000..d4fc416 --- /dev/null +++ b/lib/mlibc/abis/ironclad/statvfs.h @@ -0,0 +1,30 @@ +#ifndef _ABIBITS_STATVFS_H +#define _ABIBITS_STATVFS_H + +#include +#include + +#define ST_RDONLY 1 +#define ST_NOSUID 2 +#define ST_MANDLOCK 64 + +// On Linux, this struct is not directly used by the kernel. +struct statvfs { + unsigned long f_bsize; + unsigned long f_frsize; + fsblkcnt_t f_blocks; + fsblkcnt_t f_bfree; + fsblkcnt_t f_bavail; + + fsfilcnt_t f_files; + fsfilcnt_t f_ffree; + fsfilcnt_t f_favail; + + unsigned long f_fsid; + unsigned long f_flag; + unsigned long f_namemax; + char f_basetype[80]; +}; + +#endif /* _ABIBITS_STATVFS_H */ + diff --git a/lib/mlibc/abis/ironclad/suseconds_t.h b/lib/mlibc/abis/ironclad/suseconds_t.h new file mode 100644 index 0000000..723ddfa --- /dev/null +++ b/lib/mlibc/abis/ironclad/suseconds_t.h @@ -0,0 +1,8 @@ +#ifndef _ABIBITS_SUSECONDS_T_H +#define _ABIBITS_SUSECONDS_T_H + +#include + +typedef __mlibc_int64 suseconds_t; + +#endif /* _ABIBITS_SUSECONDS_T_H */ diff --git a/lib/mlibc/abis/ironclad/termios.h b/lib/mlibc/abis/ironclad/termios.h new file mode 100644 index 0000000..4dd5987 --- /dev/null +++ b/lib/mlibc/abis/ironclad/termios.h @@ -0,0 +1,116 @@ +#ifndef _ABIBITS_TERMIOS_H +#define _ABIBITS_TERMIOS_H + +typedef unsigned int cc_t; +typedef unsigned int speed_t; +typedef unsigned int tcflag_t; + +// indices for the c_cc array in struct termios +#define NCCS 11 +#define VEOF 0 +#define VEOL 1 +#define VERASE 2 +#define VINTR 3 +#define VKILL 4 +#define VMIN 5 +#define VQUIT 6 +#define VSTART 7 +#define VSTOP 8 +#define VSUSP 9 +#define VTIME 10 + +// bitwise flags for c_iflag in struct termios +#define BRKINT 0x0001 +#define ICRNL 0x0002 +#define IGNBRK 0x0004 +#define IGNCR 0x0008 +#define IGNPAR 0x0010 +#define INLCR 0x0020 +#define INPCK 0x0040 +#define ISTRIP 0x0080 +#define IXANY 0x0100 +#define IXOFF 0x0200 +#define IXON 0x0400 +#define PARMRK 0x0800 +#define ECHOCTL 0001000 +#define IMAXBEL 0020000 +#define ECHOKE 0004000 + +// bitwise flags for c_oflag in struct termios +#define OPOST 0x0001 +#define ONLCR 0x0002 +#define OCRNL 0x0004 +#define ONOCR 0x0008 +#define ONLRET 0x0010 +#define OFDEL 0x0020 +#define OFILL 0x0040 + +#define NLDLY 0x0080 +#define NL0 0x0000 +#define NL1 0x0080 + +#define CRDLY 0x0300 +#define CR0 0x0000 +#define CR1 0x0100 +#define CR2 0x0200 +#define CR3 0x0300 + +#define TABDLY 0x0C00 +#define TAB0 0x0000 +#define TAB1 0x0400 +#define TAB2 0x0800 +#define TAB3 0x0C00 + +#define BSDLY 0x1000 +#define BS0 0x0000 +#define BS1 0x1000 + +#define VTDLY 0x2000 +#define VT0 0x0000 +#define VT1 0x2000 + +#define FFDLY 0x4000 +#define FF0 0x0000 +#define FF1 0x4000 + +// bitwise constants for c_cflag in struct termios +#define CSIZE 0x0003 +#define CS5 0x0000 +#define CS6 0x0001 +#define CS7 0x0002 +#define CS8 0x0003 + +#define CSTOPB 0x0004 +#define CREAD 0x0008 +#define PARENB 0x0010 +#define PARODD 0x0020 +#define HUPCL 0x0040 +#define CLOCAL 0x0080 + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define CBAUD 0x100F +#endif + +// bitwise constants for c_lflag in struct termios +#define ECHO 0x0001 +#define ECHOE 0x0002 +#define ECHOK 0x0004 +#define ECHONL 0x0008 +#define ICANON 0x0010 +#define IEXTEN 0x0020 +#define ISIG 0x0040 +#define NOFLSH 0x0080 +#define TOSTOP 0x0100 +#define ECHOPRT 0x0200 + +struct termios { + tcflag_t c_iflag; + tcflag_t c_oflag; + tcflag_t c_cflag; + tcflag_t c_lflag; + cc_t c_cc[NCCS]; + speed_t ibaud; + speed_t obaud; +}; + +#endif diff --git a/lib/mlibc/abis/ironclad/time.h b/lib/mlibc/abis/ironclad/time.h new file mode 100644 index 0000000..3f49db3 --- /dev/null +++ b/lib/mlibc/abis/ironclad/time.h @@ -0,0 +1,15 @@ +#ifndef _ABIBITS_TIME_H +#define _ABIBITS_TIME_H + +#include + +struct itimerval { + struct timeval it_interval; /* Interval for periodic timer */ + struct timeval it_value; /* Time until next expiration */ +}; + +#define ITIMER_REAL 0 +#define ITIMER_VIRTUAL 1 +#define ITIMER_PROF 2 + +#endif // _ABIBITS_TIME_H diff --git a/lib/mlibc/abis/ironclad/uid_t.h b/lib/mlibc/abis/ironclad/uid_t.h new file mode 100644 index 0000000..1688d07 --- /dev/null +++ b/lib/mlibc/abis/ironclad/uid_t.h @@ -0,0 +1,6 @@ +#ifndef _ABIBITS_UID_T_H +#define _ABIBITS_UID_T_H + +typedef unsigned int uid_t; + +#endif // _ABIBITS_UID_T_H diff --git a/lib/mlibc/abis/ironclad/utsname.h b/lib/mlibc/abis/ironclad/utsname.h new file mode 100644 index 0000000..2cd2226 --- /dev/null +++ b/lib/mlibc/abis/ironclad/utsname.h @@ -0,0 +1,12 @@ +#ifndef _ABIBITS_UTSNAME_T_H +#define _ABIBITS_UTSNAME_T_H + +struct utsname { + char sysname[65]; + char nodename[65]; + char release[65]; + char version[65]; + char machine[65]; +}; + +#endif // _ABIBITS_UTSNAME_T_H diff --git a/lib/mlibc/abis/ironclad/vm-flags.h b/lib/mlibc/abis/ironclad/vm-flags.h new file mode 100644 index 0000000..a686cd3 --- /dev/null +++ b/lib/mlibc/abis/ironclad/vm-flags.h @@ -0,0 +1,46 @@ +#ifndef _ABIBITS_MMAP_FLAGS_H +#define _ABIBITS_MMAP_FLAGS_H + +#define PROT_NONE 0x00 +#define PROT_READ 0x01 +#define PROT_WRITE 0x02 +#define PROT_EXEC 0x04 + +#define MAP_FAILED ((void *)(-1)) +#define MAP_FILE 0x00 +#define MAP_PRIVATE 0x01 +#define MAP_SHARED 0x02 +#define MAP_FIXED 0x04 +#define MAP_ANON 0x08 +#define MAP_ANONYMOUS 0x08 +#define MAP_NORESERVE 0x10 +#define MAP_WC 0b10000 + +#define MS_ASYNC 0x01 +#define MS_SYNC 0x02 +#define MS_INVALIDATE 0x04 + +#define MCL_CURRENT 0x01 +#define MCL_FUTURE 0x02 + +#define POSIX_MADV_NORMAL 1 +#define POSIX_MADV_SEQUENTIAL 2 +#define POSIX_MADV_RANDOM 3 +#define POSIX_MADV_DONTNEED 4 +#define POSIX_MADV_WILLNEED 5 + +#define MADV_NORMAL 0 +#define MADV_RANDOM 1 +#define MADV_SEQUENTIAL 2 +#define MADV_WILLNEED 3 +#define MADV_DONTNEED 4 +#define MADV_FREE 8 + +// Linux extensions: +#define MREMAP_MAYMOVE 1 +#define MREMAP_FIXED 2 + +#define MFD_CLOEXEC 1U +#define MFD_ALLOW_SEALING 2U + +#endif // _ABIBITS_MMAP_FLAGS_H diff --git a/lib/mlibc/abis/ironclad/wait.h b/lib/mlibc/abis/ironclad/wait.h new file mode 100644 index 0000000..5aa6bb8 --- /dev/null +++ b/lib/mlibc/abis/ironclad/wait.h @@ -0,0 +1,25 @@ +#ifndef _ABIBITS_WAIT_H +#define _ABIBITS_WAIT_H + +#define WCONTINUED 1 +#define WNOHANG 2 +#define WUNTRACED 4 +#define WEXITED 8 +#define WNOWAIT 16 +#define WSTOPPED 32 + +#define __WALL 0x40000000 +#define __WCLONE 0x80000000 + +#define WCOREFLAG 0x80 + +#define WEXITSTATUS(x) ((x) & 0x000000FF) +#define WIFCONTINUED(x) ((x) & 0x00000100) +#define WIFEXITED(x) ((x) & 0x00000200) +#define WIFSIGNALED(x) ((x) & 0x00000400) +#define WIFSTOPPED(x) ((x) & 0x00000800) +#define WSTOPSIG(x) (((x) & 0x00FF0000) >> 16) +#define WTERMSIG(x) (((x) & 0xFF000000) >> 24) +#define WCOREDUMP(x) ((x) & WCOREFLAG) + +#endif //_ABIBITS_WAIT_H diff --git a/lib/mlibc/abis/ironclad/xattr.h b/lib/mlibc/abis/ironclad/xattr.h new file mode 100644 index 0000000..c0e7fbe --- /dev/null +++ b/lib/mlibc/abis/ironclad/xattr.h @@ -0,0 +1,21 @@ +#ifndef MLIBC_ABIS_LINUX_XATTR_H +#define MLIBC_ABIS_LINUX_XATTR_H + +/* __USE_KERNEL_XATTR_DEFS is exported when XATTR_* are emitted, and + * __UAPI_DEF_XATTR is used to determine the behaviour of the + * header (through ), if it's set + * to 1, the header exports xattr defines and __USE_KERNEL_XATTR_DEFS. + * This applies for pretty much all other defines in libc-compat.h + * AFAICT. + */ +#ifndef __USE_KERNEL_XATTR_DEFS +enum { + XATTR_CREATE = 1, +#define XATTR_CREATE XATTR_CREATE + XATTR_REPLACE = 2, +#define XATTR_REPLACE XATTR_REPLACE +}; +# define __UAPI_DEF_XATTR 0 +#endif + +#endif /* MLIBC_ABIS_LINUX_XATTR_H */ -- cgit v1.2.3