Compare commits

...

12 Commits

Author SHA1 Message Date
kaguya 19521c6ab4 console changes
Signed-off-by: kaguya3311 <kaguya3311@national.shitposting.agency>
2026-05-18 05:40:43 -04:00
kaguya e9e750bd74 elf: fix epstein related bugs
Signed-off-by: kaguya3311 <kaguya3311@national.shitposting.agency>
2026-05-18 04:50:35 -04:00
kaguya b28a6bcf29 major refactorings
Signed-off-by: kaguya3311 <kaguya3311@national.shitposting.agency>
2026-05-18 04:02:59 -04:00
kaguya f7aa6f913a libc: add linux headers
Yeah

Signed-off-by: kaguya <vpshinomiya@protonmail.com>
2026-05-03 00:48:24 -04:00
kaguya ef14a52b49 rand: Add ChaCha20-based CSPRNG, among other things
We now have RNG!

- Implement ChaCha20-based cryptographically secure random number generator (CSPRNG) in `src/drivers/rand/random.c` and its header in `src/drivers/rand/random.h`.
- Modify VFS to support directory operations, including opening directories and reading directory entries.
- Update syscall interface to include new syscalls for directory handling: `SYS_OPEN_DIR` and `SYS_READ_ENTRIES`.
- Enhance file creation in EXT2 to allow specifying file modes.
- Refactor VFS file handling to accommodate new flags and modes.
- Update user-space application in `user/include/mlibc/helloworld.c` to demonstrate file operations including `touch`, `ls`, and `cat`.
- Clean up debug print statements in EXT2 file system code.
- Worked on proper error handling and return codes across VFS and syscall implementations.

It's only a small step but we're getting closer to making error codes standardized

We also setup SSE exactly as we should've the first time we introduced it in commit 9a9b91c

We have added it correctly to the user stack trampoline (hopefully), so there shouldn't be any issues now.

Signed-off-by: kaguya <vpshinomiya@protonmail.com>
2026-05-03 00:46:59 -04:00
kaguya 9a16250a1b KirkOS 1.0.0
Signed-off-by: kaguya <vpshinomiya@protonmail.com>
2026-05-02 03:45:21 -04:00
kaguya 9a9b91c940 user: implement mlibc as the libc, finally.
It's finally done..

Signed-off-by: kaguya <vpshinomiya@protonmail.com>
2026-05-02 03:31:49 -04:00
kaguya 2fa39ad85a input: Implement console input handling and add shell for real this time
Self explanatory, we finally have a working ish shell

Now we need to do some more stuff or something, probably work on a fork or something

Signed-off-by: kaguya <vpshinomiya@protonmail.com>

Co-authored-by: Copilot <copilot@github.com>
2026-04-28 01:31:21 -04:00
kaguya 7d99745ff9 sched: Implement basic scheduling and signal handling system
Note: this is probably 25% broken, but it works right now as written, so I hope it all works.

- Added a new scheduler header file (scheduler.h) defining task structures, scheduling policies, and signal handling mechanisms.
- Integrated scheduling functions into the syscall interface, including SYS_GETPID, SYS_GETPPID, SYS_EXIT, SYS_SCHED_YIELD, SYS_NICE, SYS_KILL, SYS_SIGACTION, SYS_SIGPROCMASK, SYS_SCHED_GETSCHEDULER, and SYS_SCHED_SETSCHEDULER.
- Updated syscall handler to manage new scheduling-related syscalls and signal actions.

Signed-off-by: kaguya <vpshinomiya@protonmail.com>
2026-04-26 22:46:28 -04:00
kaguya 336af1c2ad chore: reorganize file directories
We have reorganized all the file directories that previously looked ugly as hell (cough cough arch/x86_64 cough)

Now it looks much cleaner

Signed-off-by: kaguya <vpshinomiya@protonmail.com>
2026-04-26 14:44:40 -04:00
kaguya d22d5ab2e4 mp: separate VFS read and write functions into internal implementations with locking
In preparation for the inevitable switch to a MP supported setup, I have added spinlocks to the VFS_Read and VFS_Write implementations

If I had forgotten to do this, everything would've blown up, the world would have ended, and Israel would no longer exist.

Signed-off-by: kaguya <vpshinomiya@protonmail.com>
2026-04-26 02:10:46 -04:00
kaguya e6e8b1209b sys: Refactor GDT initialization, enhance syscall handling, and improve user mode entry
Finally we got usermode working again, It took awhile but we got it done. A few things we did in this commit:

- Simplified GDT entry initialization in gdt.c for kernel and user segments.
- Fixed TSS structure for task switching.
- Implemented cr2 handling in a page fault.
- Enhanced user stack setup in usermode.c to return the correct RSP.
- Improved syscall implementation in syscall.c, including new syscall numbers.
- Updated syscall entry to correctly handle context switching and argument passing.
- Refactored init.c to demonstrate file operations using syscalls.
- Added new syscalls for file operations in syscalls.h.
- Modified VFS to handle leading slashes in paths correctly.

Signed-off-by: kaguya <vpshinomiya@protonmail.com>
2026-04-26 02:06:28 -04:00
2606 changed files with 171628 additions and 5631 deletions
+3 -1
View File
@@ -1,2 +1,4 @@
build/ build/
user/build/* user/build
toolchains/
linux-headers/
+45 -12
View File
@@ -1,11 +1,11 @@
cmake_minimum_required(VERSION 3.16) cmake_minimum_required(VERSION 3.16)
project(KirkOS C ASM) project(KirkOS C ASM_NASM)
set(VERSION 1) set(VERSION 1)
set(PATCHLEVEL 0) set(PATCHLEVEL 0)
set(SUBLEVEL 0) set(SUBLEVEL 0)
set(EXTRAVERSION "-rc1") set(EXTRAVERSION "")
set(KIRKOS_VERSION_STRING set(KIRKOS_VERSION_STRING
"${VERSION}.${PATCHLEVEL}.${SUBLEVEL}${EXTRAVERSION}" "${VERSION}.${PATCHLEVEL}.${SUBLEVEL}${EXTRAVERSION}"
@@ -17,9 +17,11 @@ message(STATUS "Building KirkOS version: ${KIRKOS_VERSION_STRING}")
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
set(CMAKE_ASM_NASM_OBJECT_FORMAT elf64)
file(GLOB_RECURSE KIRKOS_SOURCES file(GLOB_RECURSE KIRKOS_SOURCES
"${CMAKE_SOURCE_DIR}/src/*.c" "${CMAKE_SOURCE_DIR}/src/*.c"
"${CMAKE_SOURCE_DIR}/src/*.S" "${CMAKE_SOURCE_DIR}/src/*.asm"
) )
@@ -51,6 +53,7 @@ target_compile_definitions(KirkOS PRIVATE
add_custom_command( add_custom_command(
OUTPUT ${ISO_ROOT}/boot/KirkOS OUTPUT ${ISO_ROOT}/boot/KirkOS
DEPENDS KirkOS DEPENDS KirkOS
@@ -68,6 +71,7 @@ add_custom_target(limine_files
COMMAND ${CMAKE_COMMAND} -E make_directory ${ISO_ROOT}/EFI/BOOT COMMAND ${CMAKE_COMMAND} -E make_directory ${ISO_ROOT}/EFI/BOOT
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/limine.conf ${ISO_ROOT}/boot/limine/ COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/limine.conf ${ISO_ROOT}/boot/limine/
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/ramdisk.tar ${ISO_ROOT}/boot/
COMMAND ${CMAKE_COMMAND} -E copy ${LIMINE_DIR}/limine-bios.sys ${ISO_ROOT}/boot/limine/ COMMAND ${CMAKE_COMMAND} -E copy ${LIMINE_DIR}/limine-bios.sys ${ISO_ROOT}/boot/limine/
COMMAND ${CMAKE_COMMAND} -E copy ${LIMINE_DIR}/limine-bios-cd.bin ${ISO_ROOT}/boot/limine/ COMMAND ${CMAKE_COMMAND} -E copy ${LIMINE_DIR}/limine-bios-cd.bin ${ISO_ROOT}/boot/limine/
COMMAND ${CMAKE_COMMAND} -E copy ${LIMINE_DIR}/limine-uefi-cd.bin ${ISO_ROOT}/boot/limine/ COMMAND ${CMAKE_COMMAND} -E copy ${LIMINE_DIR}/limine-uefi-cd.bin ${ISO_ROOT}/boot/limine/
@@ -91,7 +95,7 @@ add_custom_target(iso
) )
add_custom_target(disk_img add_custom_target(disk_img
COMMAND dd if=/dev/zero of=${DISK_IMG} bs=1M count=32 COMMAND dd if=/dev/zero of=${DISK_IMG} bs=1M count=512
COMMAND mkfs.ext2 -F -L KIRKOS ${DISK_IMG} COMMAND mkfs.ext2 -F -L KIRKOS ${DISK_IMG}
COMMAND guestfish --rw -a ${DISK_IMG} run COMMAND guestfish --rw -a ${DISK_IMG} run
@@ -106,11 +110,12 @@ add_custom_target(run
COMMAND qemu-system-x86_64 COMMAND qemu-system-x86_64
-cdrom ${ISO} -cdrom ${ISO}
-hda ${DISK_IMG} -hda ${DISK_IMG}
-debugcon stdio -serial stdio
-m 8G -m 8G
-smp 2 -smp 4
-device ich9-intel-hda -device ich9-intel-hda
-device hda-duplex -device hda-duplex
-cpu qemu64,+fsgsbase
) )
add_custom_target(debug add_custom_target(debug
@@ -118,13 +123,28 @@ add_custom_target(debug
COMMAND qemu-system-x86_64 COMMAND qemu-system-x86_64
-cdrom ${ISO} -cdrom ${ISO}
-hda ${DISK_IMG} -hda ${DISK_IMG}
-serial stdio
-s -S -s -S
-debugcon stdio
-d int,cpu_reset -d int,cpu_reset
-m 8G -m 8G
-smp 2 -smp 2
-device ich9-intel-hda,id=hda -device ich9-intel-hda
-device hda-duplex,id=codec0,bus=hda.0,cad=0 -device hda-duplex
-cpu qemu64,+fsgsbase
)
add_custom_command(TARGET KirkOS POST_BUILD
COMMAND ${CMAKE_OBJCOPY} --only-keep-debug
$<TARGET_FILE:KirkOS>
${CMAKE_BINARY_DIR}/KirkOS.sym
COMMAND ${CMAKE_OBJCOPY} --strip-debug
$<TARGET_FILE:KirkOS>
COMMAND ${CMAKE_OBJCOPY} --add-gnu-debuglink=${CMAKE_BINARY_DIR}/KirkOS.sym
$<TARGET_FILE:KirkOS>
COMMENT "Splitting debug symbols (KirkOS.sym)"
) )
target_include_directories(KirkOS PRIVATE target_include_directories(KirkOS PRIVATE
@@ -135,10 +155,13 @@ target_include_directories(KirkOS PRIVATE
# ---------------------------------------- # ----------------------------------------
# DEFAULT C FLAGS (cacheable overrides) # DEFAULT C FLAGS (cacheable overrides)
# ---------------------------------------- # ----------------------------------------
set(KIRKOS_CFLAGS "-g -O2 -pipe -Wall -Wextra -std=gnu11 -ffreestanding -fno-stack-protector -fno-stack-check -fno-lto -fno-PIC -ffunction-sections -fdata-sections -m64 -march=x86-64 -mabi=sysv -mno-80387 -mno-mmx -mno-sse -mno-sse2 -mno-red-zone -mcmodel=kernel" set(KIRKOS_CFLAGS "-g3 -m64 -march=x86-64 -mgeneral-regs-only -fsanitize=undefined -Wall -Wextra -Wno-error -Wno-builtin-declaration-mismatch -mno-red-zone -std=gnu11 -fms-extensions -ffreestanding -fno-stack-protector -fno-stack-check -fpie -MMD"
CACHE STRING "Default CFLAGS for KirkOS") CACHE STRING "Default CFLAGS for KirkOS")
set(KIRKOS_LDFLAGS "-nostdlib -static -Wl,--gc-sections -Wl,-T,../linker.lds -Wl,-z,max-page-size=0x1000 -Wl,-m,elf_x86_64" set(KIRKOS_ASM_NASM_FLAGS "-MD -MP -f elf64 -g"
CACHE STRING "Default ASM Flags for NASM in KirkOS")
set(KIRKOS_LDFLAGS "-nostdlib -Wl,-static,-pie -Wl,--gc-sections -Wl,--no-dynamic-linker -Wl,-z,max-page-size=0x1000 -Wl,-T../linker.lds -Wl,-m,elf_x86_64"
CACHE STRING "Default LDFLAGS for KirkOS") CACHE STRING "Default LDFLAGS for KirkOS")
# ---------------------------------------- # ----------------------------------------
@@ -147,5 +170,15 @@ set(KIRKOS_LDFLAGS "-nostdlib -static -Wl,--gc-sections -Wl,-T,../linker.lds -Wl
separate_arguments(_cflags UNIX_COMMAND "${KIRKOS_CFLAGS}") separate_arguments(_cflags UNIX_COMMAND "${KIRKOS_CFLAGS}")
separate_arguments(_ldflags UNIX_COMMAND "${KIRKOS_LDFLAGS}") separate_arguments(_ldflags UNIX_COMMAND "${KIRKOS_LDFLAGS}")
target_compile_options(KirkOS PRIVATE ${_cflags}) separate_arguments(_asmflags UNIX_COMMAND "${KIRKOS_ASM_NASM_FLAGS}")
set_target_properties(KirkOS PROPERTIES
LINK_FLAGS "-Wl,--build-id=none"
)
target_compile_options(KirkOS PRIVATE
$<$<COMPILE_LANGUAGE:C>:-masm=intel>
$<$<COMPILE_LANGUAGE:C>:${_cflags}>
$<$<COMPILE_LANGUAGE:ASM_NASM>:${_asmflags}>
)
target_link_options(KirkOS PRIVATE ${_ldflags}) target_link_options(KirkOS PRIVATE ${_ldflags})
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
+3058
View File
File diff suppressed because it is too large Load Diff
+9
View File
@@ -0,0 +1,9 @@
#ifndef _ABIBITS_ACCESS_H
#define _ABIBITS_ACCESS_H
#define F_OK 0
#define X_OK 1
#define W_OK 2
#define R_OK 4
#endif /* _ABIBITS_ACCESS_H */
+16
View File
@@ -0,0 +1,16 @@
#ifndef _ABIBITS_AUXV_H
#define _ABIBITS_AUXV_H
#define AT_PLATFORM 15
#define AT_HWCAP 16
#define AT_CLKTCK 17
#define AT_FPUCW 18
#define AT_SECURE 23
#define AT_RANDOM 25
#define AT_HWCAP2 26
#define AT_HWCAP3 29
#define AT_HWCAP4 30
#define AT_EXECFN 31
#define AT_SYSINFO_EHDR 33
#endif /* _ABIBITS_AUXV_H */
+8
View File
@@ -0,0 +1,8 @@
#ifndef _ABIBITS_BLKCNT_T_H
#define _ABIBITS_BLKCNT_T_H
#include <bits/types.h>
typedef __mlibc_int64 blkcnt_t;
#endif /* _ABIBITS_BLKCNT_T_H */
+7
View File
@@ -0,0 +1,7 @@
#ifndef _ABIBITS_BLKSIZE_T_H
#define _ABIBITS_BLKSIZE_T_H
typedef long blksize_t;
#endif /* _ABIBITS_BLKSIZE_T_H */
+6
View File
@@ -0,0 +1,6 @@
#ifndef _ABIBITS_CLOCKID_T_H
#define _ABIBITS_CLOCKID_T_H
typedef int clockid_t;
#endif /* _ABIBITS_CLOCKID_T_H */
+9
View File
@@ -0,0 +1,9 @@
#ifndef _ABIBITS_DEV_T_H
#define _ABIBITS_DEV_T_H
#include <bits/types.h>
typedef __mlibc_uint64 dev_t;
#endif /* _ABIBITS_DEV_T_H */
+143
View File
@@ -0,0 +1,143 @@
#ifndef _ABIBITS_ERRNO_H
#define _ABIBITS_ERRNO_H
#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
/* This is mlibc-specific. */
#define EIEIO 4095
#endif /* _ABIBITS_ERRNO_H */
+124
View File
@@ -0,0 +1,124 @@
#ifndef _ABIBITS_FCNTL_H
#define _ABIBITS_FCNTL_H
#include <mlibc-config.h>
#include <abi-bits/pid_t.h>
#define O_PATH 010000000
#define O_ACCMODE (03 | O_PATH)
#define O_RDONLY 00
#define O_WRONLY 01
#define O_RDWR 02
#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_ASYNC 020000
#define O_DIRECT 040000
#define O_DIRECTORY 0200000
#define O_NOFOLLOW 0400000
#define O_CLOEXEC 02000000
#define O_SYNC 04010000
#define O_RSYNC 04010000
#define O_LARGEFILE 0100000
#define O_NOATIME 01000000
#define O_TMPFILE 020000000
#define O_EXEC O_PATH
#define O_SEARCH O_PATH
#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 5
#define F_SETLK 6
#define F_SETLK64 F_SETLK
#define F_SETLKW 7
#define F_SETLKW64 F_SETLKW
#define F_SETOWN_EX 15
#define F_GETOWN_EX 16
#define F_GETOWNER_UIDS 17
#define F_SETLEASE 1024
#define F_GETLEASE 1025
#define F_NOTIFY 1026
#define F_DUPFD_CLOEXEC 1030
#define F_SETPIPE_SZ 1031
#define F_GETPIPE_SZ 1032
#define F_ADD_SEALS 1033
#define F_GET_SEALS 1034
#define F_SEAL_SEAL 0x0001
#define F_SEAL_SHRINK 0x0002
#define F_SEAL_GROW 0x0004
#define F_SEAL_WRITE 0x0008
#define F_OFD_GETLK 36
#define F_OFD_SETLK 37
#define F_OFD_SETLKW 38
#define F_RDLCK 0
#define F_WRLCK 1
#define F_UNLCK 2
#define FD_CLOEXEC 1
#define AT_FDCWD -100
#define AT_SYMLINK_NOFOLLOW 0x100
#define AT_REMOVEDIR 0x200
#define AT_SYMLINK_FOLLOW 0x400
#define AT_EACCESS 0x200
#define AT_NO_AUTOMOUNT 0x800
#define AT_EMPTY_PATH 0x1000
#if __MLIBC_LINUX_OPTION
#define DN_ACCESS 1
#define DN_MODIFY 2
#define DN_CREATE 4
#define DN_DELETE 8
#define DN_RENAME 16
#define DN_ATTRIB 32
#define DN_MULTISHOT 0x80000000
#define AT_STATX_SYNC_AS_STAT 0x0000
#define AT_STATX_FORCE_SYNC 0x2000
#define AT_STATX_DONT_SYNC 0x4000
#define AT_STATX_SYNC_TYPE 0x6000
#endif /* __MLIBC_LINUX_OPTION */
#if defined(_GNU_SOURCE)
struct f_owner_ex {
int type;
pid_t pid;
};
#endif /* _GNU_SOURCE */
#define F_OWNER_TID 0
#define F_OWNER_PID 1
#define F_OWNER_PGRP 2
#define POSIX_FADV_NORMAL 0
#define POSIX_FADV_RANDOM 1
#define POSIX_FADV_SEQUENTIAL 2
#define POSIX_FADV_WILLNEED 3
#define POSIX_FADV_DONTNEED 4
#define POSIX_FADV_NOREUSE 5
#endif /* _ABIBITS_FCNTL_H */
+12
View File
@@ -0,0 +1,12 @@
#ifndef _ABIBITS_FD_SET_H
#define _ABIBITS_FD_SET_H
#include <bits/types.h>
#define FD_SETSIZE 1024
typedef struct __attribute__((__aligned__(__alignof__(long)))) {
__mlibc_uint8 fds_bits[128];
} fd_set;
#endif /* _ABIBITS_FD_SET_H */
@@ -0,0 +1,8 @@
#ifndef _ABIBITS_FSBLKCNT_T_H
#define _ABIBITS_FSBLKCNT_T_H
#include <bits/types.h>
typedef __mlibc_uint64 fsblkcnt_t;
#endif /* _ABIBITS_FSBLKCNT_T_H */
@@ -0,0 +1,8 @@
#ifndef _ABIBITS_FSFILCNT_T_H
#define _ABIBITS_FSFILCNT_T_H
#include <bits/types.h>
typedef __mlibc_uint64 fsfilcnt_t;
#endif /* _ABIBITS_FSFILCNT_T_H */
+7
View File
@@ -0,0 +1,7 @@
#ifndef _ABIBITS_GID_T_H
#define _ABIBITS_GID_T_H
typedef unsigned int gid_t;
#endif /* _ABIBITS_GID_T_H */
+235
View File
@@ -0,0 +1,235 @@
#ifndef _ABIBITS_IN_H
#define _ABIBITS_IN_H
#include <mlibc-config.h>
#include <bits/posix/in_addr_t.h>
#include <bits/posix/in_port_t.h>
#include <abi-bits/socket.h>
#include <stdint.h>
#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 sin_zero[8];
};
#if !__MLIBC_LINUX_OPTION || (!defined(_UAPI_LINUX_IN6_H) && !defined(_UAPI_IPV6_H))
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 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 in6_pktinfo {
struct in6_addr ipi6_addr;
uint32_t ipi6_ifindex;
};
#endif /* !__MLIBC_LINUX_OPTION || (!defined(_UAPI_LINUX_IN6_H) && !defined(_UAPI_IPV6_H)) */
#define MCAST_INCLUDE 1
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 {
int ipi_ifindex;
struct in_addr ipi_spec_dst;
struct in_addr ipi_addr;
};
struct group_req {
uint32_t gr_interface;
struct sockaddr_storage gr_group;
};
struct group_source_req {
uint32_t gsr_interface;
struct sockaddr_storage gsr_group;
struct sockaddr_storage gsr_source;
};
#ifdef __cplusplus
}
#endif
#define INADDR_ANY ((in_addr_t) 0x00000000)
#define INADDR_BROADCAST ((in_addr_t) 0xffffffff)
#define INADDR_NONE ((in_addr_t) 0xffffffff)
#define INADDR_LOOPBACK ((in_addr_t) 0x7f000001)
#define INADDR_UNSPEC_GROUP ((in_addr_t) 0xe0000000)
#define INADDR_ALLHOSTS_GROUP ((in_addr_t) 0xe0000001)
#define INADDR_ALLRTRS_GROUP ((in_addr_t) 0xe0000002)
#define INADDR_ALLSNOOPERS_GROUP ((in_addr_t) 0xe000006a)
#define INADDR_MAX_LOCAL_GROUP ((in_addr_t) 0xe00000ff)
#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 INET_ADDRSTRLEN 16
#define INET6_ADDRSTRLEN 46
#define IPPORT_RESERVED 1024
#define IPPROTO_IP 0
#define IPPROTO_HOPOPTS 0
#define IPPROTO_ICMP 1
#define IPPROTO_IGMP 2
#define IPPROTO_IPIP 4
#define IPPROTO_TCP 6
#define IPPROTO_EGP 8
#define IPPROTO_PUP 12
#define IPPROTO_UDP 17
#define IPPROTO_IDP 22
#define IPPROTO_TP 29
#define IPPROTO_DCCP 33
#define IPPROTO_IPV6 41
#define IPPROTO_ROUTING 43
#define IPPROTO_FRAGMENT 44
#define IPPROTO_RSVP 46
#define IPPROTO_GRE 47
#define IPPROTO_ESP 50
#define IPPROTO_AH 51
#define IPPROTO_ICMPV6 58
#define IPPROTO_NONE 59
#define IPPROTO_DSTOPTS 60
#define IPPROTO_MTP 92
#define IPPROTO_BEETPH 94
#define IPPROTO_ENCAP 98
#define IPPROTO_PIM 103
#define IPPROTO_COMP 108
#define IPPROTO_SCTP 132
#define IPPROTO_MH 135
#define IPPROTO_UDPLITE 136
#define IPPROTO_MPLS 137
#define IPPROTO_RAW 255
#define IPPROTO_MAX 256
#define IP_TOS 1
#define IP_TTL 2
#define IP_HDRINCL 3
#define IP_OPTIONS 4
#define IP_RECVOPTS 6
#define IP_RETOPTS 7
#define IP_PKTINFO 8
#define IP_PKTOPTIONS 9
#define IP_MTU_DISCOVER 10
#define IP_RECVERR 11
#define IP_RECVTTL 12
#define IP_MTU 14
#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 IP_UNICAST_IF 50
#define IPV6_2292PKTOPTIONS 6
#define IPV6_2292HOPLIMIT 8
#define IPV6_UNICAST_HOPS 16
#define IPV6_MULTICAST_IF 17
#define IPV6_MULTICAST_HOPS 18
#define IPV6_MULTICAST_LOOP 19
#define IPV6_JOIN_GROUP 20
#define IPV6_LEAVE_GROUP 21
#define IPV6_MTU_DISCOVER 23
#define IPV6_MTU 24
#define IPV6_RECVERR 25
#define IPV6_V6ONLY 26
#define IPV6_RECVPKTINFO 49
#define IPV6_PKTINFO 50
#define IPV6_RECVHOPLIMIT 51
#define IPV6_HOPLIMIT 52
#define IPV6_RECVTCLASS 66
#define IPV6_TCLASS 67
#define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP
#define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP
#define IPV6_PMTUDISC_DONT 0
#define IPV6_PMTUDISC_WANT 1
#define IPV6_PMTUDISC_DO 2
#define IPV6_PMTUDISC_PROBE 3
#define IPV6_PMTUDISC_INTERFACE 4
#define IPV6_PMTUDISC_OMIT 5
#define IP_PMTUDISC_DONT 0
#define IP_PMTUDISC_WANT 1
#define IP_PMTUDISC_DO 2
#define IP_PMTUDISC_PROBE 3
#define IP_PMTUDISC_INTERFACE 4
#define IP_PMTUDISC_OMIT 5
#define MCAST_JOIN_GROUP 42
#define MCAST_BLOCK_SOURCE 43
#define MCAST_UNBLOCK_SOURCE 44
#define MCAST_JOIN_SOURCE_GROUP 46
#define MCAST_LEAVE_SOURCE_GROUP 47
#if __MLIBC_LINUX_OPTION
#define __UAPI_DEF_IN_ADDR 0
#define __UAPI_DEF_IN_CLASS 0
#define __UAPI_DEF_IN_IPPROTO 0
#define __UAPI_DEF_IN_PKTINFO 0
#define __UAPI_DEF_IP_MREQ 0
#define __UAPI_DEF_SOCKADDR_IN 0
#define __UAPI_DEF_IN6_ADDR 0
#define __UAPI_DEF_IN6_ADDR_ALT 1
#define __UAPI_DEF_IN6_PKTINFO 0
#define __UAPI_DEF_IP6_MTUINFO 0
#define __UAPI_DEF_IPPROTO_V6 0
#define __UAPI_DEF_IPV6_MREQ 0
#define __UAPI_DEF_IPV6_OPTIONS 0
#define __UAPI_DEF_SOCKADDR_IN6 0
#endif /* __MLIBC_LINUX_OPTION */
#endif /* _ABITBITS_IN_H */
+10
View File
@@ -0,0 +1,10 @@
#ifndef _ABIBITS_INO_T_H
#define _ABIBITS_INO_T_H
#include <bits/types.h>
typedef __mlibc_uint64 ino_t;
typedef ino_t ino64_t;
#endif /* _ABIBITS_INO_T_H */
+20
View File
@@ -0,0 +1,20 @@
#ifndef _ABIBITS_IOCTLS_H
#define _ABIBITS_IOCTLS_H
#define TIOCEXCL 0x540C
#define TIOCNXCL 0x540D
#define SIOCPROTOPRIVATE 0x89E0
#define SIOCGSTAMP 0x8906
#define SIOCGIFNAME 0x8910
#define SIOCGIFCONF 0x8912
#define SIOCGIFFLAGS 0x8913
#define SIOCSIFFLAGS 0x8914
#define SIOCGIFADDR 0x8915
#define SIOCGIFINDEX 0x8933
#define SIOCATMARK 0x8905
#define SIOCGIFHWADDR 0x8927
#define SIOCGIFBRDADDR 0x8919
#define SIOCGIFNETMASK 0x891B
#endif /* _ABIBITS_IOCTLS_H */
+50
View File
@@ -0,0 +1,50 @@
#ifndef _ABIBITS_IPC_H
#define _ABIBITS_IPC_H
#include <abi-bits/uid_t.h>
#include <abi-bits/gid_t.h>
#include <abi-bits/mode_t.h>
#ifdef __cplusplus
extern "C" {
#endif
#define IPC_CREAT 01000
#define IPC_EXCL 02000
#define IPC_NOWAIT 04000
#define IPC_RMID 0
#define IPC_SET 1
#define IPC_STAT 2
#define IPC_INFO 3
#define IPC_PRIVATE ((key_t) 0)
#if defined(__aarch64__) || defined(__i386__) || defined(__m68k__)
#define IPC_64 0x100
#elif defined(__x86_64__) || (defined(__riscv) && __riscv_xlen == 64) || defined(__loongarch64)
#define IPC_64 0
#else
#error "Unsupported arch!"
#endif
typedef int key_t;
struct ipc64_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 __unused[2];
};
#define ipc_perm ipc64_perm
#ifdef __cplusplus
}
#endif
#endif
+11
View File
@@ -0,0 +1,11 @@
#ifndef _ABIBITS_LIMITS_H
#define _ABIBITS_LIMITS_H
#define IOV_MAX 1024
#define LOGIN_NAME_MAX 256
#define HOST_NAME_MAX 64
#define NAME_MAX 255
#define OPEN_MAX 256
#define _POSIX_PATH_MAX 256
#endif /*_ABIBITS_LIMITS_H */
+7
View File
@@ -0,0 +1,7 @@
#ifndef _ABIBITS_MODE_T_H
#define _ABIBITS_MODE_T_H
typedef unsigned int mode_t;
#endif /* _ABIBITS_MODE_T_H */
+20
View File
@@ -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 */
+44
View File
@@ -0,0 +1,44 @@
#ifndef _ABIBITS_MSG_H
#define _ABIBITS_MSG_H
#include <sys/ipc.h>
#include <bits/ansi/time_t.h>
#include <bits/types.h>
#include <abi-bits/pid_t.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef unsigned long msglen_t;
typedef unsigned long msgqnum_t;
struct msqid64_ds {
struct ipc64_perm msg_perm;
#if (UINTPTR_MAX == UINT64_MAX) /* || x32 ABI */
time_t msg_stime;
time_t msg_rtime;
time_t msg_ctime;
#else
unsigned long msg_stime;
unsigned long msg_stime_high;
unsigned long msg_rtime;
unsigned long msg_rtime_high;
unsigned long msg_ctime;
unsigned long msg_ctime_high;
#endif
unsigned long msg_cbytes;
msgqnum_t msg_qnum;
msglen_t msg_qbytes;
pid_t msg_lspid;
pid_t msg_lrpid;
unsigned long __unused[2];
};
#define msqid_ds msqid64_ds
#ifdef __cplusplus
}
#endif
#endif /* _ABIBITS_MSG_H */
+7
View File
@@ -0,0 +1,7 @@
#ifndef _ABIBITS_NLINK_T_H
#define _ABIBITS_NLINK_T_H
typedef unsigned long nlink_t;
#endif /* _ABIBITS_NLINK_T_H */
+7
View File
@@ -0,0 +1,7 @@
#ifndef _ABIBITS_PID_T_H
#define _ABIBITS_PID_T_H
typedef int pid_t;
#endif /* _ABIBITS_PID_T_H */
+16
View File
@@ -0,0 +1,16 @@
#ifndef _ABIBITS_POLL_H
#define _ABIBITS_POLL_H
#define POLLIN 0x0001
#define POLLPRI 0x0002
#define POLLOUT 0x0004
#define POLLERR 0x0008
#define POLLHUP 0x0010
#define POLLNVAL 0x0020
#define POLLRDNORM 0x0040
#define POLLRDBAND 0x0080
#define POLLWRNORM 0x0100
#define POLLWRBAND 0x0200
#define POLLRDHUP 0x2000
#endif /* _ABIBITS_POLL_H */
+54
View File
@@ -0,0 +1,54 @@
#ifndef _ABIBITS_RESOURCE_H
#define _ABIBITS_RESOURCE_H
#ifdef __cplusplus
extern "C" {
#endif
#include <bits/posix/timeval.h>
#define RUSAGE_SELF 0
#define RUSAGE_CHILDREN -1
#define RLIMIT_CPU 0
#define RLIMIT_FSIZE 1
#define RLIMIT_DATA 2
#define RLIMIT_STACK 3
#define RLIMIT_CORE 4
#define RLIMIT_RSS 5
#define RLIMIT_NPROC 6
#define RLIMIT_NOFILE 7
#define RLIMIT_MEMLOCK 8
#define RLIMIT_AS 9
#define RLIMIT_LOCKS 10
#define RLIMIT_SIGPENDING 11
#define RLIMIT_MSGQUEUE 12
#define RLIMIT_NICE 13
#define RLIMIT_RTPRIO 14
#define RLIMIT_RTTIME 15
#define RLIMIT_NLIMITS 16
struct rusage {
struct timeval ru_utime;
struct timeval ru_stime;
long ru_maxrss;
long ru_ixrss;
long ru_idrss;
long ru_isrss;
long ru_minflt;
long ru_majflt;
long ru_nswap;
long ru_inblock;
long ru_oublock;
long ru_msgsnd;
long ru_msgrcv;
long ru_nsignals;
long ru_nvcsw;
long ru_nivcsw;
};
#ifdef __cplusplus
}
#endif
#endif /* _ABIBITS_RESOURCE_H */
@@ -0,0 +1,107 @@
#ifndef _ABIBITS_RISCV_HWPROBE_H
#define _ABIBITS_RISCV_HWPROBE_H
#ifdef __cplusplus
extern "C" {
#endif
struct riscv_hwprobe {
signed long long int key;
unsigned long long int value;
};
#define RISCV_HWPROBE_KEY_MVENDORID 0
#define RISCV_HWPROBE_KEY_MARCHID 1
#define RISCV_HWPROBE_KEY_MIMPID 2
#define RISCV_HWPROBE_KEY_BASE_BEHAVIOR 3
#define RISCV_HWPROBE_BASE_BEHAVIOR_IMA (1 << 0)
#define RISCV_HWPROBE_KEY_IMA_EXT_0 4
#define RISCV_HWPROBE_IMA_FD (1 << 0)
#define RISCV_HWPROBE_IMA_C (1 << 1)
#define RISCV_HWPROBE_IMA_V (1 << 2)
#define RISCV_HWPROBE_EXT_ZBA (1 << 3)
#define RISCV_HWPROBE_EXT_ZBB (1 << 4)
#define RISCV_HWPROBE_EXT_ZBS (1 << 5)
#define RISCV_HWPROBE_EXT_ZICBOZ (1 << 6)
#define RISCV_HWPROBE_EXT_ZBC (1 << 7)
#define RISCV_HWPROBE_EXT_ZBKB (1 << 8)
#define RISCV_HWPROBE_EXT_ZBKC (1 << 9)
#define RISCV_HWPROBE_EXT_ZBKX (1 << 10)
#define RISCV_HWPROBE_EXT_ZKND (1 << 11)
#define RISCV_HWPROBE_EXT_ZKNE (1 << 12)
#define RISCV_HWPROBE_EXT_ZKNH (1 << 13)
#define RISCV_HWPROBE_EXT_ZKSED (1 << 14)
#define RISCV_HWPROBE_EXT_ZKSH (1 << 15)
#define RISCV_HWPROBE_EXT_ZKT (1 << 16)
#define RISCV_HWPROBE_EXT_ZVBB (1 << 17)
#define RISCV_HWPROBE_EXT_ZVBC (1 << 18)
#define RISCV_HWPROBE_EXT_ZVKB (1 << 19)
#define RISCV_HWPROBE_EXT_ZVKG (1 << 20)
#define RISCV_HWPROBE_EXT_ZVKNED (1 << 21)
#define RISCV_HWPROBE_EXT_ZVKNHA (1 << 22)
#define RISCV_HWPROBE_EXT_ZVKNHB (1 << 23)
#define RISCV_HWPROBE_EXT_ZVKSED (1 << 24)
#define RISCV_HWPROBE_EXT_ZVKSH (1 << 25)
#define RISCV_HWPROBE_EXT_ZVKT (1 << 26)
#define RISCV_HWPROBE_EXT_ZFH (1 << 27)
#define RISCV_HWPROBE_EXT_ZFHMIN (1 << 28)
#define RISCV_HWPROBE_EXT_ZIHINTNTL (1 << 29)
#define RISCV_HWPROBE_EXT_ZVFH (1 << 30)
#define RISCV_HWPROBE_EXT_ZVFHMIN (1ULL << 31)
#define RISCV_HWPROBE_EXT_ZFA (1ULL << 32)
#define RISCV_HWPROBE_EXT_ZTSO (1ULL << 33)
#define RISCV_HWPROBE_EXT_ZACAS (1ULL << 34)
#define RISCV_HWPROBE_EXT_ZICOND (1ULL << 35)
#define RISCV_HWPROBE_EXT_ZIHINTPAUSE (1ULL << 36)
#define RISCV_HWPROBE_EXT_ZVE32X (1ULL << 37)
#define RISCV_HWPROBE_EXT_ZVE32F (1ULL << 38)
#define RISCV_HWPROBE_EXT_ZVE64X (1ULL << 39)
#define RISCV_HWPROBE_EXT_ZVE64F (1ULL << 40)
#define RISCV_HWPROBE_EXT_ZVE64D (1ULL << 41)
#define RISCV_HWPROBE_EXT_ZIMOP (1ULL << 42)
#define RISCV_HWPROBE_EXT_ZCA (1ULL << 43)
#define RISCV_HWPROBE_EXT_ZCB (1ULL << 44)
#define RISCV_HWPROBE_EXT_ZCD (1ULL << 45)
#define RISCV_HWPROBE_EXT_ZCF (1ULL << 46)
#define RISCV_HWPROBE_EXT_ZCMOP (1ULL << 47)
#define RISCV_HWPROBE_EXT_ZAWRS (1ULL << 48)
#define RISCV_HWPROBE_EXT_SUPM (1ULL << 49)
#define RISCV_HWPROBE_EXT_ZICNTR (1ULL << 50)
#define RISCV_HWPROBE_EXT_ZIHPM (1ULL << 51)
#define RISCV_HWPROBE_EXT_ZFBFMIN (1ULL << 52)
#define RISCV_HWPROBE_EXT_ZVFBFMIN (1ULL << 53)
#define RISCV_HWPROBE_EXT_ZVFBFWMA (1ULL << 54)
#define RISCV_HWPROBE_EXT_ZICBOM (1ULL << 55)
#define RISCV_HWPROBE_EXT_ZAAMO (1ULL << 56)
#define RISCV_HWPROBE_EXT_ZALRSC (1ULL << 57)
#define RISCV_HWPROBE_EXT_ZABHA (1ULL << 58)
#define RISCV_HWPROBE_KEY_CPUPERF_0 5
#define RISCV_HWPROBE_MISALIGNED_UNKNOWN (0 << 0)
#define RISCV_HWPROBE_MISALIGNED_EMULATED (1 << 0)
#define RISCV_HWPROBE_MISALIGNED_SLOW (2 << 0)
#define RISCV_HWPROBE_MISALIGNED_FAST (3 << 0)
#define RISCV_HWPROBE_MISALIGNED_UNSUPPORTED (4 << 0)
#define RISCV_HWPROBE_MISALIGNED_MASK (7 << 0)
#define RISCV_HWPROBE_KEY_ZICBOZ_BLOCK_SIZE 6
#define RISCV_HWPROBE_KEY_HIGHEST_VIRT_ADDRESS 7
#define RISCV_HWPROBE_KEY_TIME_CSR_FREQ 8
#define RISCV_HWPROBE_KEY_MISALIGNED_SCALAR_PERF 9
#define RISCV_HWPROBE_MISALIGNED_SCALAR_UNKNOWN 0
#define RISCV_HWPROBE_MISALIGNED_SCALAR_EMULATED 1
#define RISCV_HWPROBE_MISALIGNED_SCALAR_SLOW 2
#define RISCV_HWPROBE_MISALIGNED_SCALAR_FAST 3
#define RISCV_HWPROBE_MISALIGNED_SCALAR_UNSUPPORTED 4
#define RISCV_HWPROBE_KEY_MISALIGNED_VECTOR_PERF 10
#define RISCV_HWPROBE_MISALIGNED_VECTOR_UNKNOWN 0
#define RISCV_HWPROBE_MISALIGNED_VECTOR_SLOW 2
#define RISCV_HWPROBE_MISALIGNED_VECTOR_FAST 3
#define RISCV_HWPROBE_MISALIGNED_VECTOR_UNSUPPORTED 4
#define RISCV_HWPROBE_KEY_VENDOR_EXT_THEAD_0 11
#define RISCV_HWPROBE_KEY_ZICBOM_BLOCK_SIZE 12
#define RISCV_HWPROBE_KEY_VENDOR_EXT_SIFIVE_0 13
#ifdef __cplusplus
}
#endif
#endif /* _ABIBITS_RISCV_HWPROBE_H */
+10
View File
@@ -0,0 +1,10 @@
#ifndef _ABIBITS_RLIM_T_H
#define _ABIBITS_RLIM_T_H
#if __INTPTR_WIDTH__ == 32
typedef unsigned long long int rlim_t;
#else
typedef unsigned long int rlim_t;
#endif
#endif /* _ABIBITS_RLIM_T_H */
@@ -0,0 +1,6 @@
#ifndef _ABIBITS_SA_FAMILY_T_H
#define _ABIBITS_SA_FAMILY_T_H
typedef unsigned short sa_family_t;
#endif /* _ABIBITS_SA_FAMILY_T_H */
+10
View File
@@ -0,0 +1,10 @@
#ifndef _ABIBITS_SEEK_WHENCE_H
#define _ABIBITS_SEEK_WHENCE_H
#define SEEK_SET 0
#define SEEK_CUR 1
#define SEEK_END 2
#define SEEK_DATA 3
#define SEEK_HOLE 4
#endif /* _ABIBITS_SEEK_WHENCE_H */
+30
View File
@@ -0,0 +1,30 @@
#ifndef _ABIBITS_SEM_H
#define _ABIBITS_SEM_H
#include <abi-bits/time.h>
#include <abi-bits/ipc.h>
#define GETPID 11
#define GETVAL 12
#define GETALL 13
#define SETVAL 16
#define SETALL 17
#define SEM_UNDO 0x1000
struct sembuf {
unsigned short int sem_num;
short int sem_op;
short int sem_flg;
};
struct semid_ds {
struct ipc_perm sem_perm;
time_t sem_otime;
time_t sem_ctime;
unsigned long sem_nsems;
unsigned long __unused[2];
};
#endif /* _ABIBITS_SEM_H */
+107
View File
@@ -0,0 +1,107 @@
#ifndef _ABIBITS_SHM_H
#define _ABIBITS_SHM_H
#ifdef __cplusplus
extern "C" {
#endif
#include <bits/ansi/time_t.h>
#include <abi-bits/pid_t.h>
#include <unistd.h>
#include <sys/ipc.h>
#define SHM_R 0400
#define SHM_W 0200
#define SHM_RDONLY 010000
#define SHM_RND 020000
#define SHM_REMAP 040000
#define SHM_EXEC 0100000
#define SHM_LOCK 11
#define SHM_UNLOCK 12
#define SHM_STAT 13
#define SHM_INFO 14
#define SHM_STAT_ANY 15
#define SHM_DEST 01000
#define SHM_LOCKED 02000
#define SHM_HUGETLB 04000
#define SHM_NORESERVE 010000
#define SHM_HUGE_SHIFT 26
#define SHM_HUGE_MASK 0x3f
#define SHM_HUGE_64KB (16 << 26)
#define SHM_HUGE_512KB (19 << 26)
#define SHM_HUGE_1MB (20 << 26)
#define SHM_HUGE_2MB (21 << 26)
#define SHM_HUGE_8MB (23 << 26)
#define SHM_HUGE_16MB (24 << 26)
#define SHM_HUGE_32MB (25 << 26)
#define SHM_HUGE_256MB (28 << 26)
#define SHM_HUGE_512MB (29 << 26)
#define SHM_HUGE_1GB (30 << 26)
#define SHM_HUGE_2GB (31 << 26)
#define SHM_HUGE_16GB (34U << 26)
typedef unsigned long shmatt_t;
#if defined(__i386__) || defined(__m68k__)
struct shmid_ds {
struct ipc_perm shm_perm;
size_t shm_segsz;
unsigned long __shm_atime_lo;
unsigned long __shm_atime_hi;
unsigned long __shm_dtime_lo;
unsigned long __shm_dtime_hi;
unsigned long __shm_ctime_lo;
unsigned long __shm_ctime_hi;
pid_t shm_cpid;
pid_t shm_lpid;
unsigned long shm_nattch;
unsigned long __unused[3];
time_t shm_atime;
time_t shm_dtime;
time_t shm_ctime;
};
#elif defined(__x86_64__) || defined(__aarch64__) || (defined(__riscv) && __riscv_xlen == 64) || defined(__loongarch64)
struct shmid_ds {
struct ipc_perm shm_perm;
size_t shm_segsz;
time_t shm_atime;
time_t shm_dtime;
time_t shm_ctime;
pid_t shm_cpid;
pid_t shm_lpid;
unsigned long shm_nattch;
unsigned long __unused[2];
};
#else
#error "Missing architecture specific code."
#endif
struct shminfo {
unsigned long shmmax;
unsigned long shmmin;
unsigned long shmmni;
unsigned long shmseg;
unsigned long shmall;
unsigned long __unused[4];
};
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;
};
#define SHMLBA (getpagesize())
#ifdef __cplusplus
}
#endif
#endif /* _ABIBITS_SHM_H */
@@ -0,0 +1,12 @@
#ifndef _ABIBITS_SIG_LIMITS_H
#define _ABIBITS_SIG_LIMITS_H
#include <mlibc-config.h>
#define NSIG_MAX 1024
#if defined(_DEFAULT_SOURCE) || __MLIBC_XOPEN
#define NZERO 20
#endif /* defined(_DEFAULT_SOURCE) || __MLIBC_XOPEN */
#endif /*_ABIBITS_SIG_LIMITS_H */
+24
View File
@@ -0,0 +1,24 @@
#ifndef _ABIBITS_SIGEVENT_H
#define _ABIBITS_SIGEVENT_H
#include <abi-bits/sigval.h>
#include <abi-bits/pid_t.h>
#ifdef __cplusplus
extern "C" {
#endif
struct sigevent {
union sigval sigev_value;
int sigev_notify;
int sigev_signo;
void (*sigev_notify_function)(union sigval);
struct __mlibc_threadattr *sigev_notify_attributes;
pid_t sigev_notify_thread_id;
};
#ifdef __cplusplus
}
#endif
#endif /* _ABIBITS_SIGEVENT_H */
+647
View File
@@ -0,0 +1,647 @@
#ifndef _ABIBITS_SIGNAL_H
#define _ABIBITS_SIGNAL_H
#include <stdint.h>
#include <time.h>
#include <abi-bits/sigevent.h>
#include <abi-bits/pid_t.h>
#include <abi-bits/uid_t.h>
#include <bits/size_t.h>
#define POLL_IN 1
#define POLL_OUT 2
#define POLL_MSG 3
#define POLL_ERR 4
#define POLL_PRI 5
#define POLL_HUP 6
/* struct taken from musl. */
typedef struct {
int si_signo, si_errno, si_code;
union {
char __pad[128 - 2*sizeof(int) - sizeof(long)];
struct {
union {
struct {
pid_t si_pid;
uid_t si_uid;
} __piduid;
struct {
int si_timerid;
int si_overrun;
} __timer;
} __first;
union {
union sigval si_value;
struct {
int si_status;
clock_t si_utime, si_stime;
} __sigchld;
} __second;
} __si_common;
struct {
void *si_addr;
short si_addr_lsb;
union {
struct {
void *si_lower;
void *si_upper;
} __addr_bnd;
unsigned si_pkey;
} __first;
} __sigfault;
struct {
long si_band;
int si_fd;
} __sigpoll;
struct {
void *si_call_addr;
int si_syscall;
unsigned si_arch;
} __sigsys;
} __si_fields;
} siginfo_t;
#define si_pid __si_fields.__si_common.__first.__piduid.si_pid
#define si_uid __si_fields.__si_common.__first.__piduid.si_uid
#define si_status __si_fields.__si_common.__second.__sigchld.si_status
#define si_utime __si_fields.__si_common.__second.__sigchld.si_utime
#define si_stime __si_fields.__si_common.__second.__sigchld.si_stime
#define si_value __si_fields.__si_common.__second.si_value
#define si_addr __si_fields.__sigfault.si_addr
#define si_addr_lsb __si_fields.__sigfault.si_addr_lsb
#define si_lower __si_fields.__sigfault.__first.__addr_bnd.si_lower
#define si_upper __si_fields.__sigfault.__first.__addr_bnd.si_upper
#define si_pkey __si_fields.__sigfault.__first.si_pkey
#define si_band __si_fields.__sigpoll.si_band
#define si_fd __si_fields.__sigpoll.si_fd
#define si_timerid __si_fields.__si_common.__first.__timer.si_timerid
#define si_overrun __si_fields.__si_common.__first.__timer.si_overrun
#define si_ptr si_value.sival_ptr
#define si_int si_value.sival_int
#define si_call_addr __si_fields.__sigsys.si_call_addr
#define si_syscall __si_fields.__sigsys.si_syscall
#define si_arch __si_fields.__sigsys.si_arch
/* Required for sys_sigaction sysdep. */
#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
/* SA_NOMASK is an alias for SA_NODEFER */
/* SA_ONESHOT is an alias for SA_RESETHAND */
#define SA_NOMASK SA_NODEFER
#define SA_ONESHOT SA_RESETHAND
#ifdef __cplusplus
extern "C" {
#endif
/* Argument for signal() */
typedef void (*__sighandler) (int);
#define SIG_ERR ((__sighandler)(void *)(-1))
#define SIG_DFL ((__sighandler)(void *)(0))
#define SIG_IGN ((__sighandler)(void *)(1))
#define SIGABRT 6
#define SIGFPE 8
#define SIGILL 4
#define SIGINT 2
#define SIGSEGV 11
#define SIGTERM 15
#define SIGPROF 27
#define SIGIO 29
#define SIGPWR 30
#define SIGRTMIN 35
#define SIGRTMAX 64
typedef struct {
unsigned long sig[1024 / (8 * sizeof(long))];
} sigset_t;
/* constants for sigprocmask() */
#define SIG_BLOCK 0
#define SIG_UNBLOCK 1
#define SIG_SETMASK 2
#define SIGHUP 1
#define SIGQUIT 3
#define SIGTRAP 5
#define SIGIOT SIGABRT
#define SIGBUS 7
#define SIGKILL 9
#define SIGUSR1 10
#define SIGUSR2 12
#define SIGPIPE 13
#define SIGALRM 14
#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 SIGWINCH 28
#define SIGPOLL 29
#define SIGSYS 31
#define SIGUNUSED SIGSYS
#define SIGCANCEL 32
#define SIGTIMER 33
#define MINSIGSTKSZ 2048
#define SIGSTKSZ 8192
#define SS_ONSTACK 1
#define SS_DISABLE 2
typedef struct __stack {
void *ss_sp;
int ss_flags;
size_t ss_size;
} stack_t;
/* constants for sigev_notify of struct sigevent */
#define SIGEV_SIGNAL 0
#define SIGEV_NONE 1
#define SIGEV_THREAD 2
#define SIGEV_THREAD_ID 4
#define SEGV_MAPERR 1
#define SEGV_ACCERR 2
#define BUS_ADRALN 1
#define BUS_ADRERR 2
#define BUS_OBJERR 3
#define BUS_MCEERR_AR 4
#define BUS_MCEERR_AO 5
#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
#define NSIG 65
#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
#if defined(__i386__)
#define REG_GS 0
#define REG_FS 1
#define REG_ES 2
#define REG_DS 3
#define REG_EDI 4
#define REG_ESI 5
#define REG_EBP 6
#define REG_ESP 7
#define REG_EBX 8
#define REG_EDX 9
#define REG_ECX 10
#define REG_EAX 11
#define REG_TRAPNO 12
#define REG_ERR 13
#define REG_EIP 14
#define REG_CS 15
#define REG_EFL 16
#define REG_UESP 17
#define REG_SS 18
#define NGREG 19
#elif defined(__x86_64__)
#define REG_R8 0
#define REG_R9 1
#define REG_R10 2
#define REG_R11 3
#define REG_R12 4
#define REG_R13 5
#define REG_R14 6
#define REG_R15 7
#define REG_RDI 8
#define REG_RSI 9
#define REG_RBP 10
#define REG_RBX 11
#define REG_RDX 12
#define REG_RAX 13
#define REG_RCX 14
#define REG_RSP 15
#define REG_RIP 16
#define REG_EFL 17
#define REG_CSGSFS 18
#define REG_ERR 19
#define REG_TRAPNO 20
#define REG_OLDMASK 21
#define REG_CR2 22
#define NGREG 23
#endif
#include <bits/threads.h>
struct sigaction {
union {
void (*sa_handler)(int);
void (*sa_sigaction)(int, siginfo_t *, void *);
} __sa_handler;
unsigned long sa_flags;
void (*sa_restorer)(void);
sigset_t sa_mask;
};
#define sa_handler __sa_handler.sa_handler
#define sa_sigaction __sa_handler.sa_sigaction
/* Taken from the linux kernel headers */
#if defined(__x86_64__) || defined(__i386__)
struct _fpreg {
unsigned short significand[4];
unsigned short exponent;
};
struct _fpxreg {
unsigned short significand[4];
unsigned short exponent;
unsigned short padding[3];
};
struct _xmmreg {
uint32_t element[4];
};
struct _fpstate {
#if defined(__x86_64__)
uint16_t cwd;
uint16_t swd;
uint16_t ftw;
uint16_t fop;
uint64_t rip;
uint64_t rdp;
uint32_t mxcsr;
uint32_t mxcr_mask;
struct _fpxreg _st[8];
struct _xmmreg _xmm[16];
uint32_t padding[24];
#elif defined(__i386__)
uint32_t cw;
uint32_t sw;
uint32_t tag;
uint32_t ipoff;
uint32_t cssel;
uint32_t dataoff;
uint32_t datasel;
struct _fpreg _st[8];
uint16_t status;
uint16_t magic;
/* FXSR FPU */
uint32_t _fxsr_env[6];
uint32_t mxscr;
uint32_t reserved;
struct _fpxreg _fxsr_st[8];
struct _xmmreg _xmm[8];
uint32_t padding2[56];
#endif
};
struct sigcontext {
#if defined(__x86_64__)
unsigned long r8, r9, r10, r11, r12, r13, r14, r15;
unsigned long rdi, rsi, rbp, rbx, rdx, rax, rcx, rsp, rip, eflags;
unsigned short cs, gs, fs, __pad0;
unsigned long err, trapno, oldmask, cr2;
struct _fpstate *fpstate;
unsigned long __reserved1[8];
#elif defined(__i386__)
unsigned short gs, __gsh, fs, __fsh, es, __esh, ds, __dsh;
unsigned long edi, esi, ebp, esp, ebx, edx, ecx, eax;
unsigned long trapno, err, eip;
unsigned short cs, __csh;
unsigned long eflags, esp_at_signal;
unsigned short ss, __ssh;
struct _fpstate *fpstate;
unsigned long oldmask, cr2;
#endif
};
typedef struct {
unsigned long gregs[NGREG];
struct _fpstate *fpregs;
unsigned long __reserved1[8];
} 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;
#elif defined(__riscv) && __riscv_xlen == 64
/* Definitions from Linux kernel headers. */
#define NGREG 32
enum {
REG_PC = 0,
#define REG_PC REG_PC
REG_RA = 1,
#define REG_RA REG_RA
REG_SP = 2,
#define REG_SP REG_SP
REG_TP = 4,
#define REG_TP REG_TP
REG_S0 = 8,
#define REG_S0 REG_S0
REG_A0 = 10
#define REG_A0 REG_A0
};
struct __riscv_f_ext_state {
uint32_t f[32];
uint32_t fcsr;
};
struct __riscv_d_ext_state {
uint64_t f[32];
uint32_t fcsr;
};
struct __riscv_q_ext_state {
uint64_t f[64] __attribute__((__aligned__(16)));
uint32_t fcsr;
uint32_t reserved[3];
};
union __riscv_fp_state {
struct __riscv_f_ext_state f;
struct __riscv_d_ext_state d;
struct __riscv_q_ext_state q;
};
typedef unsigned long __riscv_mc_gp_state[NGREG];
typedef struct sigcontext {
__riscv_mc_gp_state gregs;
union __riscv_fp_state fpregs;
} mcontext_t;
typedef struct __ucontext {
unsigned long uc_flags;
struct ucontext *uc_link;
stack_t uc_stack;
sigset_t uc_sigmask;
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpedantic"
uint8_t __unused[1024 / 8 - sizeof(sigset_t)];
#pragma GCC diagnostic pop
mcontext_t uc_mcontext;
} ucontext_t;
#elif defined (__aarch64__)
#define NGREG 34
typedef struct sigcontext {
uint64_t fault_address;
uint64_t regs[31];
uint64_t sp;
uint64_t pc;
uint64_t pstate;
uint8_t __reserved[4096];
} mcontext_t;
#define FPSIMD_MAGIC 0x46508001
#define ESR_MAGIC 0x45535201
#define EXTRA_MAGIC 0x45585401
#define SVE_MAGIC 0x53564501
struct _aarch64_ctx {
uint32_t magic;
uint32_t size;
};
struct fpsimd_context {
struct _aarch64_ctx head;
uint32_t fpsr;
uint32_t fpcr;
__uint128_t vregs[32];
};
struct esr_context {
struct _aarch64_ctx head;
uint64_t esr;
};
struct extra_context {
struct _aarch64_ctx head;
uint64_t datap;
uint32_t size;
uint32_t __reserved[3];
};
struct sve_context {
struct _aarch64_ctx head;
uint16_t vl;
uint16_t __reserved[3];
};
#define SVE_VQ_BYTES 16
#define SVE_VQ_MIN 1
#define SVE_VQ_MAX 512
#define SVE_VL_MIN (SVE_VQ_MIN * SVE_VQ_BYTES)
#define SVE_VL_MAX (SVE_VQ_MAX * SVE_VQ_BYTES)
#define SVE_NUM_ZREGS 32
#define SVE_NUM_PREGS 16
#define sve_vl_valid(vl) \
((vl) % SVE_VQ_BYTES == 0 && (vl) >= SVE_VL_MIN && (vl) <= SVE_VL_MAX)
#define sve_vq_from_vl(vl) ((vl) / SVE_VQ_BYTES)
#define sve_vl_from_vq(vq) ((vq) * SVE_VQ_BYTES)
#define SVE_SIG_ZREG_SIZE(vq) ((unsigned)(vq) * SVE_VQ_BYTES)
#define SVE_SIG_PREG_SIZE(vq) ((unsigned)(vq) * (SVE_VQ_BYTES / 8))
#define SVE_SIG_FFR_SIZE(vq) SVE_SIG_PREG_SIZE(vq)
#define SVE_SIG_REGS_OFFSET \
((sizeof(struct sve_context) + (SVE_VQ_BYTES - 1)) \
/ SVE_VQ_BYTES * SVE_VQ_BYTES)
#define SVE_SIG_ZREGS_OFFSET SVE_SIG_REGS_OFFSET
#define SVE_SIG_ZREG_OFFSET(vq, n) \
(SVE_SIG_ZREGS_OFFSET + SVE_SIG_ZREG_SIZE(vq) * (n))
#define SVE_SIG_ZREGS_SIZE(vq) \
(SVE_SIG_ZREG_OFFSET(vq, SVE_NUM_ZREGS) - SVE_SIG_ZREGS_OFFSET)
#define SVE_SIG_PREGS_OFFSET(vq) \
(SVE_SIG_ZREGS_OFFSET + SVE_SIG_ZREGS_SIZE(vq))
#define SVE_SIG_PREG_OFFSET(vq, n) \
(SVE_SIG_PREGS_OFFSET(vq) + SVE_SIG_PREG_SIZE(vq) * (n))
#define SVE_SIG_PREGS_SIZE(vq) \
(SVE_SIG_PREG_OFFSET(vq, SVE_NUM_PREGS) - SVE_SIG_PREGS_OFFSET(vq))
#define SVE_SIG_FFR_OFFSET(vq) \
(SVE_SIG_PREGS_OFFSET(vq) + SVE_SIG_PREGS_SIZE(vq))
#define SVE_SIG_REGS_SIZE(vq) \
(SVE_SIG_FFR_OFFSET(vq) + SVE_SIG_FFR_SIZE(vq) - SVE_SIG_REGS_OFFSET)
#define SVE_SIG_CONTEXT_SIZE(vq) (SVE_SIG_REGS_OFFSET + SVE_SIG_REGS_SIZE(vq))
typedef struct __ucontext {
unsigned long uc_flags;
struct __ucontext *uc_link;
stack_t uc_stack;
sigset_t uc_sigmask;
mcontext_t uc_mcontext;
} ucontext_t;
#elif defined (__m68k__)
/* taken from musl */
#if defined(_GNU_SOURCE) || defined(__MLIBC_BUILDING_MLIBC)
enum { R_D0 = 0 };
#define R_D0 R_D0
enum { R_D1 = 1 };
#define R_D1 R_D1
enum { R_D2 = 2 };
#define R_D2 R_D2
enum { R_D3 = 3 };
#define R_D3 R_D3
enum { R_D4 = 4 };
#define R_D4 R_D4
enum { R_D5 = 5 };
#define R_D5 R_D5
enum { R_D6 = 6 };
#define R_D6 R_D6
enum { R_D7 = 7 };
#define R_D7 R_D7
enum { R_A0 = 8 };
#define R_A0 R_A0
enum { R_A1 = 9 };
#define R_A1 R_A1
enum { R_A2 = 10 };
#define R_A2 R_A2
enum { R_A3 = 11 };
#define R_A3 R_A3
enum { R_A4 = 12 };
#define R_A4 R_A4
enum { R_A5 = 13 };
#define R_A5 R_A5
enum { R_A6 = 14 };
#define R_A6 R_A6
enum { R_A7 = 15 };
#define R_A7 R_A7
enum { R_SP = 15 };
#define R_SP R_SP
enum { R_PC = 16 };
#define R_PC R_PC
enum { R_PS = 17 };
#define R_PS R_PS
#endif
#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(__MLIBC_BUILDING_MLIBC)
struct sigcontext {
unsigned long sc_mask, sc_usp, sc_d0, sc_d1, sc_a0, sc_a1;
unsigned short sc_sr;
unsigned long sc_pc;
unsigned short sc_formatvec;
unsigned long sc_fpregs[6], sc_fpcntl[3];
unsigned char sc_fpstate[216];
};
typedef int greg_t, gregset_t[18];
typedef struct {
int f_pcr, f_psr, f_fpiaddr, f_fpregs[8][3];
} fpregset_t;
typedef struct {
int version;
gregset_t gregs;
fpregset_t fpregs;
} mcontext_t;
#else
typedef struct {
int __version;
int __gregs[18];
int __fpregs[27];
} 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;
long __reserved[80];
sigset_t uc_sigmask;
} ucontext_t;
#elif defined(__loongarch64)
/* Taken from musl. */
#define NGREG 32
#define REG_RA 1
#define REG_SP 3
#define REG_S0 23
#define REG_S1 24
#define REG_A0 4
#define REG_S2 25
#define REG_NARGS 8
typedef unsigned long greg_t, gregset_t[32];
struct sigcontext {
unsigned long sc_pc;
unsigned long sc_regs[32];
unsigned sc_flags;
unsigned long sc_extcontext[1] __attribute__((__aligned__(16)));
};
typedef struct {
unsigned long pc;
unsigned long gregs[32];
unsigned flags;
unsigned long extcontext[1] __attribute__((__aligned__(16)));
} mcontext_t;
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;
sigset_t uc_sigmask;
long __uc_pad;
mcontext_t uc_mcontext;
} ucontext_t;
#else
#error "Missing architecture specific code."
#endif
#ifdef __cplusplus
}
#endif
#endif /* _ABIBITS_SIGNAL_H */
+17
View File
@@ -0,0 +1,17 @@
#ifndef _ABIBITS_SIGVAL_H
#define _ABIBITS_SIGVAL_H
#ifdef __cplusplus
extern "C" {
#endif
union sigval {
int sival_int;
void *sival_ptr;
};
#ifdef __cplusplus
}
#endif
#endif /* _ABIBITS_SIGVAL_H */
@@ -0,0 +1,12 @@
#ifndef _ABIBITS_SOCKADDR_STORAGE_H
#define _ABIBITS_SOCKADDR_STORAGE_H
#include <abi-bits/sa_family_t.h>
struct sockaddr_storage {
sa_family_t ss_family;
char __padding[128 - sizeof(sa_family_t) - sizeof(long)];
long __force_alignment;
};
#endif /* _ABIBITS_SOCKADDR_STORAGE_H */
+329
View File
@@ -0,0 +1,329 @@
#ifndef _ABIBITS_SOCKET_H
#define _ABIBITS_SOCKET_H
#include <stddef.h>
#include <abi-bits/socklen_t.h>
#include <bits/posix/iovec.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef unsigned short sa_family_t;
struct msghdr {
void *msg_name;
socklen_t msg_namelen;
struct iovec *msg_iov;
size_t msg_iovlen; /* int in POSIX */
void *msg_control;
size_t msg_controllen; /* socklen_t in POSIX */
int msg_flags;
};
struct sockaddr_storage {
sa_family_t ss_family;
char __padding[128 - sizeof(sa_family_t) - sizeof(long)];
long __force_alignment;
};
struct mmsghdr {
struct msghdr msg_hdr;
unsigned int msg_len;
};
struct cmsghdr {
size_t cmsg_len; /* socklen_t in POSIX */
int cmsg_level;
int cmsg_type;
};
#ifdef __cplusplus
}
#endif
#define SCM_RIGHTS 1
#define SCM_CREDENTIALS 2
#define SHUT_RD 0
#define SHUT_WR 1
#define SHUT_RDWR 2
#ifndef SOCK_STREAM
#define SOCK_STREAM 1
#define SOCK_DGRAM 2
#endif
#define SOCK_RAW 3
#define SOCK_RDM 4
#define SOCK_SEQPACKET 5
#define SOCK_DCCP 6
#define SOCK_PACKET 10
#ifndef SOCK_CLOEXEC
#define SOCK_CLOEXEC 02000000
#define SOCK_NONBLOCK 04000
#endif
#define PF_UNSPEC 0
#define PF_LOCAL 1
#define PF_UNIX PF_LOCAL
#define PF_FILE PF_LOCAL
#define PF_INET 2
#define PF_AX25 3
#define PF_IPX 4
#define PF_APPLETALK 5
#define PF_NETROM 6
#define PF_BRIDGE 7
#define PF_ATMPVC 8
#define PF_X25 9
#define PF_INET6 10
#define PF_ROSE 11
#define PF_DECnet 12
#define PF_NETBEUI 13
#define PF_SECURITY 14
#define PF_KEY 15
#define PF_NETLINK 16
#define PF_ROUTE PF_NETLINK
#define PF_PACKET 17
#define PF_ASH 18
#define PF_ECONET 19
#define PF_ATMSVC 20
#define PF_RDS 21
#define PF_SNA 22
#define PF_IRDA 23
#define PF_PPPOX 24
#define PF_WANPIPE 25
#define PF_LLC 26
#define PF_IB 27
#define PF_MPLS 28
#define PF_CAN 29
#define PF_TIPC 30
#define PF_BLUETOOTH 31
#define PF_IUCV 32
#define PF_RXRPC 33
#define PF_ISDN 34
#define PF_PHONET 35
#define PF_IEEE802154 36
#define PF_CAIF 37
#define PF_ALG 38
#define PF_NFC 39
#define PF_VSOCK 40
#define PF_KCM 41
#define PF_QIPCRTR 42
#define PF_SMC 43
#define PF_XDP 44
#define PF_MAX 45
#define AF_UNSPEC PF_UNSPEC
#define AF_LOCAL PF_LOCAL
#define AF_UNIX AF_LOCAL
#define AF_FILE AF_LOCAL
#define AF_INET PF_INET
#define AF_AX25 PF_AX25
#define AF_IPX PF_IPX
#define AF_APPLETALK PF_APPLETALK
#define AF_NETROM PF_NETROM
#define AF_BRIDGE PF_BRIDGE
#define AF_ATMPVC PF_ATMPVC
#define AF_X25 PF_X25
#define AF_INET6 PF_INET6
#define AF_ROSE PF_ROSE
#define AF_DECnet PF_DECnet
#define AF_NETBEUI PF_NETBEUI
#define AF_SECURITY PF_SECURITY
#define AF_KEY PF_KEY
#define AF_NETLINK PF_NETLINK
#define AF_ROUTE PF_ROUTE
#define AF_PACKET PF_PACKET
#define AF_ASH PF_ASH
#define AF_ECONET PF_ECONET
#define AF_ATMSVC PF_ATMSVC
#define AF_RDS PF_RDS
#define AF_SNA PF_SNA
#define AF_IRDA PF_IRDA
#define AF_PPPOX PF_PPPOX
#define AF_WANPIPE PF_WANPIPE
#define AF_LLC PF_LLC
#define AF_IB PF_IB
#define AF_MPLS PF_MPLS
#define AF_CAN PF_CAN
#define AF_TIPC PF_TIPC
#define AF_BLUETOOTH PF_BLUETOOTH
#define AF_IUCV PF_IUCV
#define AF_RXRPC PF_RXRPC
#define AF_ISDN PF_ISDN
#define AF_PHONET PF_PHONET
#define AF_IEEE802154 PF_IEEE802154
#define AF_CAIF PF_CAIF
#define AF_ALG PF_ALG
#define AF_NFC PF_NFC
#define AF_VSOCK PF_VSOCK
#define AF_KCM PF_KCM
#define AF_QIPCRTR PF_QIPCRTR
#define AF_SMC PF_SMC
#define AF_XDP PF_XDP
#define AF_MAX PF_MAX
#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_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_PASSCRED 16
#define SO_PEERCRED 17
#define SO_RCVLOWAT 18
#define SO_SNDLOWAT 19
#define SO_ACCEPTCONN 30
#define SO_PEERSEC 31
#define SO_SNDBUFFORCE 32
#define SO_RCVBUFFORCE 33
#define SO_PROTOCOL 38
#define SO_DOMAIN 39
#ifndef SO_RCVTIMEO
#if __LONG_MAX == 0x7fffffff
#define SO_RCVTIMEO 66
#else
#define SO_RCVTIMEO 20
#endif
#endif
#ifndef SO_RCVTIMEO_OLD
#define SO_RCVTIMEO_OLD 20
#endif
#ifndef SO_SNDTIMEO
#if __LONG_MAX == 0x7fffffff
#define SO_SNDTIMEO 67
#else
#define SO_SNDTIMEO 21
#endif
#endif
#ifndef SO_SNDTIMEO_OLD
#define SO_SNDTIMEO_OLD 21
#endif
#ifndef SO_TIMESTAMP
#if __LONG_MAX == 0x7fffffff
#define SO_TIMESTAMP 63
#define SO_TIMESTAMPNS 64
#define SO_TIMESTAMPING 65
#else
#define SO_TIMESTAMP 29
#define SO_TIMESTAMPNS 35
#define SO_TIMESTAMPING 37
#endif
#endif
#define SO_SECURITY_AUTHENTICATION 22
#define SO_SECURITY_ENCRYPTION_TRANSPORT 23
#define SO_SECURITY_ENCRYPTION_NETWORK 24
#define SO_BINDTODEVICE 25
#define SO_ATTACH_FILTER 26
#define SO_DETACH_FILTER 27
#define SO_GET_FILTER SO_ATTACH_FILTER
#define SO_PEERNAME 28
#define SCM_TIMESTAMP SO_TIMESTAMP
#define SO_PASSSEC 34
#define SCM_TIMESTAMPNS SO_TIMESTAMPNS
#define SO_MARK 36
#define SCM_TIMESTAMPING SO_TIMESTAMPING
#define SO_RXQ_OVFL 40
#define SO_WIFI_STATUS 41
#define SCM_WIFI_STATUS SO_WIFI_STATUS
#define SO_PEEK_OFF 42
#define SO_NOFCS 43
#define SO_LOCK_FILTER 44
#define SO_SELECT_ERR_QUEUE 45
#define SO_BUSY_POLL 46
#define SO_MAX_PACING_RATE 47
#define SO_BPF_EXTENSIONS 48
#define SO_INCOMING_CPU 49
#define SO_ATTACH_BPF 50
#define SO_DETACH_BPF SO_DETACH_FILTER
#define SO_ATTACH_REUSEPORT_CBPF 51
#define SO_ATTACH_REUSEPORT_EBPF 52
#define SO_CNX_ADVICE 53
#define SCM_TIMESTAMPING_OPT_STATS 54
#define SO_MEMINFO 55
#define SO_INCOMING_NAPI_ID 56
#define SO_COOKIE 57
#define SCM_TIMESTAMPING_PKTINFO 58
#define SO_PEERGROUPS 59
#define SO_ZEROCOPY 60
#define SO_TXTIME 61
#define SCM_TXTIME SO_TXTIME
#define SO_BINDTOIFINDEX 62
#define SO_DETACH_REUSEPORT_BPF 68
#define SOL_SOCKET 1
#define SOL_IP 0
#define SOL_IPV6 41
#define SOL_ICMPV6 58
#define SOL_RAW 255
#define SOL_DECNET 261
#define SOL_X25 262
#define SOL_PACKET 263
#define SOL_ATM 264
#define SOL_AAL 265
#define SOL_IRDA 266
#define SOL_NETBEUI 267
#define SOL_LLC 268
#define SOL_DCCP 269
#define SOL_NETLINK 270
#define SOL_TIPC 271
#define SOL_RXRPC 272
#define SOL_PPPOL2TP 273
#define SOL_BLUETOOTH 274
#define SOL_PNPIPE 275
#define SOL_RDS 276
#define SOL_IUCV 277
#define SOL_CAIF 278
#define SOL_ALG 279
#define SOL_NFC 280
#define SOL_KCM 281
#define SOL_TLS 282
#define SOL_XDP 283
#define SOMAXCONN 128
#define MSG_OOB 0x0001
#define MSG_PEEK 0x0002
#define MSG_DONTROUTE 0x0004
#define MSG_CTRUNC 0x0008
#define MSG_PROXY 0x0010
#define MSG_TRUNC 0x0020
#define MSG_DONTWAIT 0x0040
#define MSG_EOR 0x0080
#define MSG_WAITALL 0x0100
#define MSG_FIN 0x0200
#define MSG_SYN 0x0400
#define MSG_CONFIRM 0x0800
#define MSG_RST 0x1000
#define MSG_ERRQUEUE 0x2000
#define MSG_NOSIGNAL 0x4000
#define MSG_MORE 0x8000
#define MSG_WAITFORONE 0x10000
#define MSG_BATCH 0x40000
#define MSG_ZEROCOPY 0x4000000
#define MSG_FASTOPEN 0x20000000
#define MSG_CMSG_CLOEXEC 0x40000000
#endif
+6
View File
@@ -0,0 +1,6 @@
#ifndef _ABIBITS_SOCKLEN_T_H
#define _ABIBITS_SOCKLEN_T_H
typedef unsigned socklen_t;
#endif /* _ABIBITS_SOCKLEN_T_H */
+148
View File
@@ -0,0 +1,148 @@
#ifndef _ABIBITS_STAT_H
#define _ABIBITS_STAT_H
#include <abi-bits/uid_t.h>
#include <abi-bits/gid_t.h>
#include <bits/off_t.h>
#include <abi-bits/mode_t.h>
#include <abi-bits/dev_t.h>
#include <abi-bits/ino_t.h>
#include <abi-bits/blksize_t.h>
#include <abi-bits/blkcnt_t.h>
#include <abi-bits/nlink_t.h>
#include <bits/ansi/time_t.h>
#include <bits/ansi/timespec.h>
#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
#if defined(__x86_64__)
struct stat {
dev_t st_dev;
ino_t st_ino;
nlink_t st_nlink;
mode_t st_mode;
uid_t st_uid;
gid_t st_gid;
unsigned int __pad0;
dev_t st_rdev;
off_t st_size;
blksize_t st_blksize;
blkcnt_t st_blocks;
struct timespec st_atim;
struct timespec st_mtim;
struct timespec st_ctim;
long __unused[3];
};
#elif (defined(__riscv) && __riscv_xlen == 64) || defined (__aarch64__) || defined(__loongarch64)
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;
dev_t __pad1;
off_t st_size;
blksize_t st_blksize;
int __pad2;
blkcnt_t st_blocks;
struct timespec st_atim;
struct timespec st_mtim;
struct timespec st_ctim;
int __pad3[2];
};
#elif defined(__i386__)
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 {
long tv_sec;
long tv_nsec;
} __st_atim32, __st_mtim32, __st_ctim32;
ino_t st_ino;
/* These fields are not in the ABI. Their values are */
/* copied from __st_atim32, __st_mtim32, __st_ctim32 */
/* accordingly. */
struct timespec st_atim;
struct timespec st_mtim;
struct timespec st_ctim;
};
#elif defined (__m68k__)
struct stat {
dev_t st_dev;
unsigned char __st_dev_padding[2];
unsigned long __st_ino;
mode_t st_mode;
nlink_t st_nlink;
uid_t st_uid;
gid_t st_gid;
dev_t st_rdev;
unsigned char __st_rdev_padding;
long long st_size; /* TODO: off64_t? */
blksize_t st_blksize;
blkcnt_t st_blocks;
struct timespec st_atim;
struct timespec st_mtim;
struct timespec st_ctim;
ino_t st_ino;
};
#endif
#define stat64 stat
#ifdef __cplusplus
}
#endif
#endif /* _ABIBITS_STAT_H */
+51
View File
@@ -0,0 +1,51 @@
#ifndef _ABIBITS_STATVFS_H
#define _ABIBITS_STATVFS_H
#include <abi-bits/fsblkcnt_t.h>
#include <abi-bits/fsfilcnt_t.h>
#define ST_RDONLY 1
#define ST_NOSUID 2
#define ST_NODEV 4
#define ST_NOEXEC 8
#define ST_SYNCHRONOUS 16
#define ST_MANDLOCK 64
#define ST_WRITE 128
#define ST_APPEND 256
#define ST_IMMUTABLE 512
#define ST_NOATIME 1024
#define ST_NODIRATIME 2048
/* On Linux, this struct is not directly used by the kernel. */
/* WARNING: keep `statvfs` and `statvfs64` in sync or bad things will happen! */
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;
};
/* WARNING: keep `statvfs` and `statvfs64` in sync or bad things will happen! */
struct statvfs64 {
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;
};
#endif /* _ABIBITS_STATVFS_H */
+77
View File
@@ -0,0 +1,77 @@
#ifndef _ABIBITS_STATX_H
#define _ABIBITS_STATX_H
#include <mlibc-config.h>
#if !__MLIBC_LINUX_OPTION
# error "statx() is inherently Linux specific. Enable the Linux option or do not use this header."
#endif /* !__MLIBC_LINUX_OPTION */
#include <bits/types.h>
struct statx_timestamp {
__mlibc_int64 tv_sec;
__mlibc_uint32 tv_nsec;
__mlibc_uint32 __padding;
};
#define STATX_TYPE 0x1
#define STATX_MODE 0x2
#define STATX_NLINK 0x4
#define STATX_UID 0x8
#define STATX_GID 0x10
#define STATX_ATIME 0x20
#define STATX_MTIME 0x40
#define STATX_CTIME 0x80
#define STATX_INO 0x100
#define STATX_SIZE 0x200
#define STATX_BLOCKS 0x400
#define STATX_BASIC_STATS 0x7ff
#define STATX_BTIME 0x800
#define STATX_MNT_ID 0x1000
#define STATX_DIOALIGN 0x2000
#define STATX_ALL 0xfff
#define STATX_ATTR_COMPRESSED 0x4
#define STATX_ATTR_IMMUTABLE 0x10
#define STATX_ATTR_APPEND 0x20
#define STATX_ATTR_NODUMP 0x40
#define STATX_ATTR_ENCRYPTED 0x800
#define STATX_ATTR_AUTOMOUNT 0x1000
#define STATX_ATTR_MOUNT_ROOT 0x2000
#define STATX_ATTR_VERITY 0x100000
#define STATX_ATTR_DAX 0x200000
struct statx {
__mlibc_uint32 stx_mask;
__mlibc_uint32 stx_blksize;
__mlibc_uint64 stx_attributes;
__mlibc_uint32 stx_nlink;
__mlibc_uint32 stx_uid;
__mlibc_uint32 stx_gid;
__mlibc_uint16 stx_mode;
__mlibc_uint16 __padding;
__mlibc_uint64 stx_ino;
__mlibc_uint64 stx_size;
__mlibc_uint64 stx_blocks;
__mlibc_uint64 stx_attributes_mask;
struct statx_timestamp stx_atime;
struct statx_timestamp stx_btime;
struct statx_timestamp stx_ctime;
struct statx_timestamp stx_mtime;
__mlibc_uint32 stx_rdev_major;
__mlibc_uint32 stx_rdev_minor;
__mlibc_uint32 stx_dev_major;
__mlibc_uint32 stx_dev_minor;
__mlibc_uint64 stx_mnt_id;
__mlibc_uint32 stx_dio_mem_align;
__mlibc_uint32 stx_dio_offset_align;
__mlibc_uint64 __padding1[12];
};
#endif
+8
View File
@@ -0,0 +1,8 @@
#ifndef _ABIBITS_SUSECONDS_T_H
#define _ABIBITS_SUSECONDS_T_H
#include <bits/types.h>
typedef long suseconds_t;
#endif /* _ABIBITS_SUSECONDS_T_H */
+155
View File
@@ -0,0 +1,155 @@
#ifndef _ABIBITS_TERMIOS_H
#define _ABIBITS_TERMIOS_H
typedef unsigned char cc_t;
typedef unsigned int speed_t;
typedef unsigned int tcflag_t;
/* indices for the c_cc array in struct termios */
#define NCCS 32
#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
/* bitwise flags for c_iflag in struct termios */
#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
/* bitwise flags for c_oflag in struct termios */
#define OPOST 0000001
#define OLCUC 0000002
#define ONLCR 0000004
#define OCRNL 0000010
#define ONOCR 0000020
#define ONLRET 0000040
#define OFILL 0000100
#define OFDEL 0000200
#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_XOPEN_SOURCE)
#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
#endif
#define VTDLY 0040000
#define VT0 0000000
#define VT1 0040000
/* bitwise constants for c_cflag in struct termios */
#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
/* bitwise constants for c_lflag in struct termios */
#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
#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
#define EXTA 0000016
#define EXTB 0000017
#define CBAUD 0010017
#define CBAUDEX 0010000
#define CIBAUD 002003600000
#define CMSPAR 010000000000
#define CRTSCTS 020000000000
#define XCASE 0000004
#define ECHOCTL 0001000
#define ECHOPRT 0002000
#define ECHOKE 0004000
#define FLUSHO 0010000
#define PENDIN 0040000
#define EXTPROC 0200000
#define XTABS 0014000
#endif
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 ibaud;
speed_t obaud;
};
#define NCC 8
struct termio {
unsigned short c_iflag;
unsigned short c_oflag;
unsigned short c_cflag;
unsigned short c_lflag;
unsigned char c_line;
unsigned char c_cc[NCC];
};
#endif
+15
View File
@@ -0,0 +1,15 @@
#ifndef _ABIBITS_TIME_H
#define _ABIBITS_TIME_H
#include <bits/posix/timeval.h>
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 */
+7
View File
@@ -0,0 +1,7 @@
#ifndef _ABIBITS_UID_T_H
#define _ABIBITS_UID_T_H
typedef unsigned int uid_t;
#endif /* _ABIBITS_UID_T_H */
+25
View File
@@ -0,0 +1,25 @@
#ifndef _ABIBITS_UTMP_DEFINES_H
#define _ABIBITS_UTMP_DEFINES_H
#include <mlibc-config.h>
#define EMPTY 0
#define RUN_LVL 1
#define BOOT_TIME 2
#define NEW_TIME 3
#define OLD_TIME 4
#define INIT_PROCESS 5
#define LOGIN_PROCESS 6
#define USER_PROCESS 7
#define DEAD_PROCESS 8
#ifdef _GNU_SOURCE
#define ACCOUNTING 9
#endif
#if __MLIBC_LINUX_OPTION
#define UTMP_FILE "/var/run/utmp"
#define WTMP_FILE "/var/log/wtmp"
#endif /* __MLIBC_LINUX_OPTION */
#endif /* _ABIBITS_UTMP_DEFINES_H */
+36
View File
@@ -0,0 +1,36 @@
#ifndef _ABIBITS_UTMPX_H
#define _ABIBITS_UTMPX_H
#include <abi-bits/pid_t.h>
#include <bits/posix/timeval.h>
#define __UT_HOSTSIZE 256
#define __UT_NAMESIZE 32
#define __UT_LINESIZE 32
/* Struct definition taken from musl */
struct utmpx {
short ut_type;
short __ut_pad1;
pid_t ut_pid;
char ut_line[__UT_LINESIZE];
char ut_id[4];
char ut_user[__UT_NAMESIZE];
char ut_host[__UT_HOSTSIZE];
struct {
short __e_termination;
short __e_exit;
} ut_exit;
int ut_session, __ut_pad2;
struct timeval ut_tv;
unsigned ut_addr_v6[4];
char __unused[20];
};
#define e_exit __e_exit
#define e_termination __e_termination
#define UTMPX_FILE "/var/run/utmp"
#define WTMPX_FILE "/var/log/wtmp"
#endif /* _ABIBITS_UTMPX_H */
+13
View File
@@ -0,0 +1,13 @@
#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];
char domainname[65];
};
#endif /* _ABIBITS_UTSNAME_T_H */
+81
View File
@@ -0,0 +1,81 @@
#ifndef _ABIBITS_VM_FLAGS_H
#define _ABIBITS_VM_FLAGS_H
#include <mlibc-config.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_SHARED 0x01
#define MAP_PRIVATE 0x02
#define MAP_FIXED 0x10
#define MAP_ANON 0x20
#define MAP_ANONYMOUS 0x20
#if __MLIBC_LINUX_OPTION
#define MAP_GROWSDOWN 0x100
#define MAP_DENYWRITE 0x800
#define MAP_EXECUTABLE 0x1000
#define MAP_LOCKED 0x2000
#define MAP_NORESERVE 0x4000
#define MAP_POPULATE 0x8000
#define MAP_NONBLOCK 0x10000
#define MAP_STACK 0x20000
#define MAP_HUGETLB 0x40000
#define MAP_SYNC 0x80000
#define MAP_FIXED_NOREPLACE 0x100000
#endif /* __MLIBC_LINUX_OPTION */
#define MS_ASYNC 0x01
#define MS_INVALIDATE 0x02
#define MS_SYNC 0x04
#define MCL_CURRENT 0x01
#define MCL_FUTURE 0x02
#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
#if __MLIBC_LINUX_OPTION
#define MADV_NORMAL 0
#define MADV_RANDOM 1
#define MADV_SEQUENTIAL 2
#define MADV_WILLNEED 3
#define MADV_DONTNEED 4
#define MADV_FREE 8
#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_WIPEONFORK 18
#define MADV_KEEPONFORK 19
#define MADV_COLD 20
#define MADV_PAGEOUT 21
#define MADV_HWPOISON 100
#define MADV_SOFT_OFFLINE 101
#define MREMAP_MAYMOVE 1
#define MREMAP_FIXED 2
#define MFD_CLOEXEC 1U
#define MFD_ALLOW_SEALING 2U
#define MFD_HUGETLB 4U
#endif /* __MLIBC_LINUX_OPTION */
#endif /* _ABIBITS_VM_FLAGS_H */
+34
View File
@@ -0,0 +1,34 @@
#ifndef _ABIBITS_WAIT_H
#define _ABIBITS_WAIT_H
#include <mlibc-config.h>
#define WNOHANG 1
#define WUNTRACED 2
#define WSTOPPED 2
#define WEXITED 4
#define WCONTINUED 8
#define WNOWAIT 0x01000000
#if __MLIBC_LINUX_OPTION
#define __WALL 0x40000000
#define __WCLONE 0x80000000
#endif /* __MLIBC_LINUX_OPTION */
#define WCOREFLAG 0x80
#define WEXITSTATUS(x) (((x) & 0xff00) >> 8)
#define WTERMSIG(x) ((x) & 0x7f)
#define WSTOPSIG(x) WEXITSTATUS(x)
#define WIFEXITED(x) (WTERMSIG(x) == 0)
#define WIFSIGNALED(x) (((signed char) (((x) & 0x7f) + 1) >> 1) > 0)
#define WIFSTOPPED(x) (((x) & 0xff) == 0x7f)
#define WIFCONTINUED(x) ((x) == 0xffff)
#define WCOREDUMP(x) ((x) & WCOREFLAG)
/* glibc extension, but also useful for kernels */
#define W_EXITCODE(ret, sig) (((ret) << 8) | (sig))
#endif /*_ABIBITS_WAIT_H */
+8
View File
@@ -0,0 +1,8 @@
#ifndef _ALLOCA_H
#define _ALLOCA_H
#define alloca __builtin_alloca
#endif /* _ALLOCA_H */
+27
View File
@@ -0,0 +1,27 @@
#ifndef _AR_H
#define _AR_H
#define ARMAG "!<arch>\n"
#define SARMAG 8
#define ARFMAG "`\n"
#ifdef __cplusplus
extern "C" {
#endif
struct ar_hdr {
char ar_name[16];
char ar_date[12];
char ar_uid[6];
char ar_gid[6];
char ar_mode[8];
char ar_size[10];
char ar_fmag[2];
};
#ifdef __cplusplus
}
#endif
#endif
+47
View File
@@ -0,0 +1,47 @@
#ifndef _ARPA_INET_H
#define _ARPA_INET_H
#include <netinet/in.h>
#include <stdint.h>
#include <sys/socket.h>
#ifdef __cplusplus
extern "C" {
#endif
#ifndef __MLIBC_ABI_ONLY
uint32_t htonl(uint32_t __x);
uint16_t htons(uint16_t __x);
uint32_t ntohl(uint32_t __x);
uint16_t ntohs(uint16_t __x);
/* ---------------------------------------------------------------------------- */
/* IPv4 address manipulation. */
/* ---------------------------------------------------------------------------- */
in_addr_t inet_addr(const char *__cp);
in_addr_t inet_network(const char *__cp);
char *inet_ntoa(struct in_addr __in);
/* GLIBC replacement for inet_addr(). */
int inet_aton(const char *__cp, struct in_addr *__dest);
/* ---------------------------------------------------------------------------- */
/* Generic IP address manipulation. */
/* ---------------------------------------------------------------------------- */
const char *inet_ntop(int __af, const void *__restrict __src, char *__restrict __dst,
socklen_t __size) __attribute__((__nonnull__(3)));
int inet_pton(int __af, const char *__restrict __src, void *__restrict __dst);
struct in_addr inet_makeaddr(in_addr_t __net, in_addr_t __host);
in_addr_t inet_netof(struct in_addr __in);
#endif /* !__MLIBC_ABI_ONLY */
#ifdef __cplusplus
}
#endif
#endif /* _ARPA_INET_H */
+266
View File
@@ -0,0 +1,266 @@
#ifndef _ARPA_NAMESER_H
#define _ARPA_NAMESER_H
#include <stdint.h>
#include <bits/size_t.h>
#ifdef __cplusplus
extern "C" {
#endif
#define NS_PACKETSZ 512
#define NS_MAXDNAME 1025
#define NS_MAXLABEL 63
typedef enum __ns_rcode {
ns_r_noerror = 0,
ns_r_formerr = 1,
ns_r_servfail = 2,
ns_r_nxdomain = 3,
ns_r_notimpl = 4,
ns_r_refused = 5,
ns_r_yxdomain = 6,
ns_r_yxrrset = 7,
ns_r_nxrrset = 8,
ns_r_notauth = 9,
ns_r_notzone = 10,
ns_r_max = 11,
ns_r_badvers = 16,
ns_r_badsig = 16,
ns_r_badkey = 17,
ns_r_badtime = 18
} ns_rcode;
typedef enum __ns_type {
ns_t_invalid = 0,
ns_t_a = 1,
ns_t_ns = 2,
ns_t_md = 3,
ns_t_mf = 4,
ns_t_cname = 5,
ns_t_soa = 6,
ns_t_mb = 7,
ns_t_mg = 8,
ns_t_mr = 9,
ns_t_null = 10,
ns_t_wks = 11,
ns_t_ptr = 12,
ns_t_hinfo = 13,
ns_t_minfo = 14,
ns_t_mx = 15,
ns_t_txt = 16,
ns_t_rp = 17,
ns_t_afsdb = 18,
ns_t_x25 = 19,
ns_t_isdn = 20,
ns_t_rt = 21,
ns_t_nsap = 22,
ns_t_nsap_ptr = 23,
ns_t_sig = 24,
ns_t_key = 25,
ns_t_px = 26,
ns_t_gpos = 27,
ns_t_aaaa = 28,
ns_t_loc = 29,
ns_t_nxt = 30,
ns_t_eid = 31,
ns_t_nimloc = 32,
ns_t_srv = 33,
ns_t_atma = 34,
ns_t_naptr = 35,
ns_t_kx = 36,
ns_t_cert = 37,
ns_t_a6 = 38,
ns_t_dname = 39,
ns_t_sink = 40,
ns_t_opt = 41,
ns_t_apl = 42,
ns_t_tkey = 249,
ns_t_tsig = 250,
ns_t_ixfr = 251,
ns_t_axfr = 252,
ns_t_mailb = 253,
ns_t_maila = 254,
ns_t_any = 255,
ns_t_zxfr = 256,
ns_t_max = 65536
} ns_type;
typedef enum __ns_class {
ns_c_invalid = 0,
ns_c_in = 1,
ns_c_2 = 2,
ns_c_chaos = 3,
ns_c_hs = 4,
ns_c_none = 254,
ns_c_any = 255,
ns_c_max = 65536
} ns_class;
typedef enum __ns_sect {
ns_s_qd = 0,
ns_s_zn = 0,
ns_s_an = 1,
ns_s_pr = 1,
ns_s_ns = 2,
ns_s_ud = 2,
ns_s_ar = 3,
ns_s_max = 4
} ns_sect;
typedef struct __ns_msg {
const unsigned char *_msg, *_eom;
uint16_t _id, _flags, _counts[ns_s_max];
const unsigned char *_sections[ns_s_max];
ns_sect _sect;
int _rrnum;
const unsigned char *_msg_ptr;
} ns_msg;
#define ns_msg_id(handle) ((handle)._id + 0)
#define ns_msg_base(handle) ((handle)._msg + 0)
#define ns_msg_end(handle) ((handle)._eom + 0)
#define ns_msg_size(handle) ((handle)._eom - (handle)._msg)
#define ns_msg_count(handle, section) ((handle)._counts[section] + 0)
typedef struct __ns_rr {
char name[NS_MAXDNAME];
uint16_t type;
uint16_t rr_class;
uint32_t ttl;
uint16_t rdlength;
const unsigned char *rdata;
} ns_rr;
#define ns_rr_name(rr) (((rr).name[0] != '\0') ? (rr).name : ".")
#define ns_rr_type(rr) ((ns_type)((rr).type + 0))
#define ns_rr_class(rr) ((ns_class)((rr).rr_class + 0))
#define ns_rr_ttl(rr) ((rr).ttl + 0)
#define ns_rr_rdlen(rr) ((rr).rdlength + 0)
#define ns_rr_rdata(rr) ((rr).rdata + 0)
#ifndef __MLIBC_ABI_ONLY
#define NS_GET16(s, cp) (void)((s) = ns_get16(((cp) += 2) - 2))
#define NS_GET32(l, cp) (void)((l) = ns_get32(((cp) += 4) - 4))
#define NS_PUT16(s, cp) ns_put16((s), ((cp) += 2) - 2)
#define NS_PUT32(l, cp) ns_put32((l), ((cp) += 4) - 4)
unsigned ns_get16(const unsigned char *__src);
unsigned long ns_get32(const unsigned char *__src);
void ns_put16(unsigned int __value, unsigned char *__src);
void ns_put32(unsigned long __value, unsigned char *__src);
int ns_initparse(const unsigned char *__msg, int __msglen, ns_msg *__handle);
int ns_parserr(ns_msg *__msg, ns_sect __section, int __rrnum, ns_rr *__rr);
int ns_name_uncompress(const unsigned char *__msg, const unsigned char *__eom,
const unsigned char *__src, char *__dst, size_t __dstsize);
#endif /* !__MLIBC_ABI_ONLY */
typedef struct {
unsigned id :16;
#if __BYTE_ORDER == __BIG_ENDIAN
unsigned qr: 1;
unsigned opcode: 4;
unsigned aa: 1;
unsigned tc: 1;
unsigned rd: 1;
unsigned ra: 1;
unsigned unused :1;
unsigned ad: 1;
unsigned cd: 1;
unsigned rcode :4;
#else
unsigned rd :1;
unsigned tc :1;
unsigned aa :1;
unsigned opcode :4;
unsigned qr :1;
unsigned rcode :4;
unsigned cd: 1;
unsigned ad: 1;
unsigned unused :1;
unsigned ra :1;
#endif
unsigned qdcount :16;
unsigned ancount :16;
unsigned nscount :16;
unsigned arcount :16;
} HEADER;
#define PACKETSZ NS_PACKETSZ
#define MAXDNAME NS_MAXDNAME
#define NOERROR ns_r_noerror
#define FORMERR ns_r_formerr
#define SERVFAIL ns_r_servfail
#define NXDOMAIN ns_r_nxdomain
#define NOTIMP ns_r_notimpl
#define REFUSED ns_r_refused
#define YXDOMAIN ns_r_yxdomain
#define YXRRSET ns_r_yxrrset
#define NXRRSET ns_r_nxrrset
#define NOTAUTH ns_r_notauth
#define NOTZONE ns_r_notzone
#define T_A ns_t_a
#define T_NS ns_t_ns
#define T_MD ns_t_md
#define T_MF ns_t_mf
#define T_CNAME ns_t_cname
#define T_SOA ns_t_soa
#define T_MB ns_t_mb
#define T_MG ns_t_mg
#define T_MR ns_t_mr
#define T_NULL ns_t_null
#define T_WKS ns_t_wks
#define T_PTR ns_t_ptr
#define T_HINFO ns_t_hinfo
#define T_MINFO ns_t_minfo
#define T_MX ns_t_mx
#define T_TXT ns_t_txt
#define T_RP ns_t_rp
#define T_AFSDB ns_t_afsdb
#define T_X25 ns_t_x25
#define T_ISDN ns_t_isdn
#define T_RT ns_t_rt
#define T_NSAP ns_t_nsap
#define T_NSAP_PTR ns_t_nsap_ptr
#define T_SIG ns_t_sig
#define T_KEY ns_t_key
#define T_PX ns_t_px
#define T_GPOS ns_t_gpos
#define T_AAAA ns_t_aaaa
#define T_LOC ns_t_loc
#define T_NXT ns_t_nxt
#define T_EID ns_t_eid
#define T_NIMLOC ns_t_nimloc
#define T_SRV ns_t_srv
#define T_ATMA ns_t_atma
#define T_NAPTR ns_t_naptr
#define T_A6 ns_t_a6
#define T_DNAME ns_t_dname
#define T_TSIG ns_t_tsig
#define T_IXFR ns_t_ixfr
#define T_AXFR ns_t_axfr
#define T_MAILB ns_t_mailb
#define T_MAILA ns_t_maila
#define T_ANY ns_t_any
#define C_IN ns_c_in
#define C_CHAOS ns_c_chaos
#define C_HS ns_c_hs
#define C_NONE ns_c_none
#define C_ANY ns_c_any
#define GETSHORT NS_GET16
#define GETLONG NS_GET32
#define PUTSHORT NS_PUT16
#define PUTLONG NS_PUT32
#ifdef __cplusplus
}
#endif
#endif /* _ARPA_NAMESER_H */
@@ -0,0 +1 @@
#include <arpa/nameser.h>
+20
View File
@@ -0,0 +1,20 @@
#ifndef _ABIBITS_IOCTLS_H
#define _ABIBITS_IOCTLS_H
#define TIOCEXCL 0x540C
#define TIOCNXCL 0x540D
#define SIOCPROTOPRIVATE 0x89E0
#define SIOCGSTAMP 0x8906
#define SIOCGIFNAME 0x8910
#define SIOCGIFCONF 0x8912
#define SIOCGIFFLAGS 0x8913
#define SIOCSIFFLAGS 0x8914
#define SIOCGIFADDR 0x8915
#define SIOCGIFINDEX 0x8933
#define SIOCATMARK 0x8905
#define SIOCGIFHWADDR 0x8927
#define SIOCGIFBRDADDR 0x8919
#define SIOCGIFNETMASK 0x891B
#endif /* _ABIBITS_IOCTLS_H */
+46
View File
@@ -0,0 +1,46 @@
#ifndef _ASSERT_H
#define _ASSERT_H
#ifdef __cplusplus
extern "C" {
#endif
#ifndef __MLIBC_ABI_ONLY
/* NOTE: This is not ISO C. Declared in LSB */
__attribute__ ((__noreturn__)) void __assert_fail(const char *assertion, const char *file, unsigned int line,
const char *function);
#endif /* !__MLIBC_ABI_ONLY */
#ifdef __cplusplus
}
#endif
#endif /* _ASSERT_H */
#include <mlibc-config.h>
#if __MLIBC_GLIBC_OPTION
# include <bits/glibc/glibc_assert.h>
#endif
/* NOTE: [7.2] requires this be outside the include guard */
#ifdef NDEBUG
#undef assert
#define assert(ignore) ((void)0)
#else /* NDEBUG */
#undef assert
#define assert(assertion) ((void)((assertion) \
|| (__assert_fail(#assertion, __FILE__, __LINE__, __func__), 0)))
#endif /* NDEBUG */
#ifndef __cplusplus
#undef static_assert
#define static_assert _Static_assert
#endif
+93
View File
@@ -0,0 +1,93 @@
#ifndef MLIBC_FENV_H
#define MLIBC_FENV_H
#if defined(__x86_64__) || defined(__i386__)
#define FE_DENORMAL 2
#define FE_DIVBYZERO 4
#define FE_INEXACT 32
#define FE_INVALID 1
#define FE_OVERFLOW 8
#define FE_UNDERFLOW 16
#define FE_ALL_EXCEPT (FE_DENORMAL | FE_DIVBYZERO | FE_INEXACT | FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW)
#define FE_TONEAREST 0
#define FE_DOWNWARD 0x400
#define FE_UPWARD 0x800
#define FE_TOWARDZERO 0xC00
#elif defined(__aarch64__)
#define FE_INVALID 1
#define FE_DIVBYZERO 2
#define FE_OVERFLOW 4
#define FE_UNDERFLOW 8
#define FE_INEXACT 16
#define FE_ALL_EXCEPT 31
#define FE_TONEAREST 0
#define FE_UPWARD 0x400000
#define FE_DOWNWARD 0x800000
#define FE_TOWARDZERO 0xC00000
#elif defined(__riscv) && __riscv_xlen == 64
#define FE_INEXACT 1
#define FE_UNDERFLOW 2
#define FE_OVERFLOW 4
#define FE_DIVBYZERO 8
#define FE_INVALID 16
#define FE_ALL_EXCEPT 31
#define FE_TONEAREST 0
#define FE_TOWARDZERO 1
#define FE_DOWNWARD 2
#define FE_UPWARD 3
#elif defined (__m68k__)
#if __HAVE_68881__ || __mcffpu__ || __HAVE_FPU_
#define FE_INEXACT 8
#define FE_DIVBYZERO 16
#define FE_UNDERFLOW 32
#define FE_OVERFLOW 64
#define FE_INVALID 128
#define FE_ALL_EXCEPT 0xf8
#define FE_TONEAREST 0
#define FE_TOWARDZERO 16
#define FE_DOWNWARD 32
#define FE_UPWARD 48
#else
#define FE_ALL_EXCEPT 0
#define FE_TONEAREST 0
#endif
#elif defined(__loongarch64)
#define FE_INEXACT 0x010000
#define FE_UNDERFLOW 0x020000
#define FE_OVERFLOW 0x040000
#define FE_DIVBYZERO 0x080000
#define FE_INVALID 0x100000
#define FE_ALL_EXCEPT (FE_INEXACT | FE_DIVBYZERO | FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID)
#define FE_TONEAREST 0x000
#define FE_TOWARDZERO 0x100
#define FE_UPWARD 0x200
#define FE_DOWNWARD 0x300
#else
#error Unknown architecture
#endif
#endif /* MLIBC_FENV_H */
+8
View File
@@ -0,0 +1,8 @@
#ifndef MLIBC_TIME_T
#define MLIBC_TIME_T
typedef long time_t;
#endif
@@ -0,0 +1,13 @@
#ifndef MLIBC_TIMESPEC_H
#define MLIBC_TIMESPEC_H
#include <bits/ansi/time_t.h>
struct timespec {
time_t tv_sec;
long tv_nsec;
};
#endif /* MLIBC_TIMESPEC_H */
@@ -0,0 +1,20 @@
#ifndef MLIBC_BSD_STDLIB_H
#define MLIBC_BSD_STDLIB_H
#ifdef __cplusplus
extern "C" {
#endif
#ifndef __MLIBC_ABI_ONLY
int getloadavg(double *__loadavg, int __count);
#endif /* !__MLIBC_ABI_ONLY */
#ifdef __cplusplus
}
#endif
#endif /* MLIBC_BSD_STDLIB_H */
@@ -0,0 +1,20 @@
#ifndef _BSD_UNISTD_H
#define _BSD_UNISTD_H
#ifdef __cplusplus
extern "C" {
#endif
#include <stdint.h>
#ifndef __MLIBC_ABI_ONLY
void *sbrk(intptr_t __increment);
#endif /* !__MLIBC_ABI_ONLY */
#ifdef __cplusplus
}
#endif
#endif /* _BSD_UNISTD_H */
+13
View File
@@ -0,0 +1,13 @@
#ifndef _MLIBC_INTERNAL_CPU_SET_H
#define _MLIBC_INTERNAL_CPU_SET_H
typedef unsigned long __cpu_mask;
#define CPU_SETSIZE 1024
#define __NCPUBITS (8 * sizeof(__cpu_mask))
typedef struct {
__cpu_mask __bits[CPU_SETSIZE / __NCPUBITS];
} cpu_set_t;
#endif /* _MLIBC_INTERNAL_CPU_SET_H */
+45
View File
@@ -0,0 +1,45 @@
#ifndef MLIBC_ENSURE_H
#define MLIBC_ENSURE_H
#ifdef __cplusplus
extern "C" {
#endif
#ifndef __MLIBC_ABI_ONLY
void __ensure_fail(const char *assertion, const char *file, unsigned int line,
const char *function);
void __ensure_warn(const char *assertion, const char *file, unsigned int line,
const char *function);
#endif /* !__MLIBC_ABI_ONLY */
#define __ensure(assertion) do { if(!(assertion)) \
__ensure_fail(#assertion, __FILE__, __LINE__, __func__); } while(0)
#define MLIBC_UNIMPLEMENTED() __ensure_fail("Functionality is not implemented", \
__FILE__, __LINE__, __func__)
#define MLIBC_MISSING_SYSDEP() __ensure_warn("Library function fails due to missing sysdep", \
__FILE__, __LINE__, __func__)
#define MLIBC_CHECK_OR_ENOSYS(sysdep, ret) ({ \
if (!(sysdep)) { \
__ensure_warn("Library function fails due to missing sysdep", \
__FILE__, __LINE__, __func__); \
errno = ENOSYS; \
return (ret); \
} \
sysdep; \
})
#define MLIBC_STUB_BODY ({ MLIBC_UNIMPLEMENTED(); __builtin_unreachable(); })
#ifdef __cplusplus
}
#endif
#endif /* MLIBC_ENSURE_H */
+10
View File
@@ -0,0 +1,10 @@
#ifndef MLIBC_ETHER_ADDR_H
#define MLIBC_ETHER_ADDR_H
#include <stdint.h>
struct ether_addr {
uint8_t ether_addr_octet[6];
} __attribute__((__packed__));
#endif /* MLIBC_ETHER_ADDR_H */
+6
View File
@@ -0,0 +1,6 @@
#ifndef MLIBC_FILE_T_H
#define MLIBC_FILE_T_H
typedef struct __mlibc_file_base FILE;
#endif /* MLIBC_FILE_T_H */
+15
View File
@@ -0,0 +1,15 @@
#ifndef MLIBC_BITS_GETOPT
#define MLIBC_BITS_GETOPT
struct option {
const char *name;
int has_arg;
int *flag;
int val;
};
#define no_argument 0
#define required_argument 1
#define optional_argument 2
#endif /* MLIBC_BITS_GETOPT */
@@ -0,0 +1,32 @@
#ifndef MLIBC_GLIBC_ASSERT_H
#define MLIBC_GLIBC_ASSERT_H
#ifdef __cplusplus
extern "C" {
#endif
#ifndef __MLIBC_ABI_ONLY
__attribute__ ((__noreturn__)) void __assert_fail_perror(int __errno, const char *__file, unsigned int __line,
const char *__function);
#endif /* !__MLIBC_ABI_ONLY */
#ifdef __cplusplus
}
#endif
#endif /* MLIBC_GLIBC_ASSERT_H */
#ifdef NDEBUG
#undef assert_perror
#define assert_perror(ignore) ((void)0)
#else /* NDEBUG */
#undef assert_perror
#define assert_perror(errno) (!(errno) \
|| (__assert_fail_perror((errno), __FILE__, __LINE__, __func__), 0))
#endif /* NDEBUG */
@@ -0,0 +1,21 @@
#ifndef _GLIBC_NETINET_ICMP6_H
#define _GLIBC_NETINET_ICMP6_H
#ifdef __cplusplus
extern "C" {
#endif
#define ND_OPT_SOURCE_LINKADDR 1
#define ND_OPT_TARGET_LINKADDR 2
#define ND_OPT_PREFIX_INFORMATION 3
#define ND_OPT_REDIRECTED_HEADER 4
#define ND_OPT_MTU 5
#define ND_OPT_RTR_ADV_INTERVAL 7
#define ND_OPT_HOME_AGENT_INFO 8
#ifdef __cplusplus
}
#endif
#endif /* _GLIBC_NETINET_ICMP6_H */
@@ -0,0 +1,17 @@
#ifndef _GLIBC_MALLOC_H
#define _GLIBC_MALLOC_H
#ifdef __cplusplus
extern "C" {
#endif
#include <bits/size_t.h>
size_t malloc_usable_size(void *__ptr);
#ifdef __cplusplus
}
#endif
#endif /* _GLIBC_MALLOC_H */
@@ -0,0 +1,22 @@
#ifndef _GLIBC_SEARCH_H
#define _GLIBC_SEARCH_H
#ifdef __cplusplus
extern "C" {
#endif
#include <bits/search.h>
#ifndef __MLIBC_ABI_ONLY
int hcreate_r(size_t __num_entries, struct hsearch_data *__htab);
void hdestroy_r(struct hsearch_data *__htab);
int hsearch_r(ENTRY __item, ACTION __action, ENTRY **__ret, struct hsearch_data *__htab);
#endif
#ifdef __cplusplus
}
#endif
#endif /* _GLIBC_SEARCH_H */
@@ -0,0 +1,24 @@
#ifndef MLIBC_GLIBC_SIGNAL_H
#define MLIBC_GLIBC_SIGNAL_H
#ifdef __cplusplus
extern "C" {
#endif
#ifndef __MLIBC_ABI_ONLY
int tgkill(int __tgid, int __tid, int __sig);
#if defined(_GNU_SOURCE)
typedef void (*sighandler_t)(int __signo);
#endif
#endif /* !__MLIBC_ABI_ONLY */
#ifdef __cplusplus
}
#endif
#endif /* MLIBC_GLIBC_SIGNAL_H */
@@ -0,0 +1,20 @@
#ifndef MLIBC_GLIBC_STDLIB_H
#define MLIBC_GLIBC_STDLIB_H
#ifdef __cplusplus
extern "C" {
#endif
typedef int (*comparison_fn_t) (const void *__a, const void *__b);
#ifndef __MLIBC_ABI_ONLY
int rpmatch(const char *__resp);
#endif /* !__MLIBC_ABI_ONLY */
#ifdef __cplusplus
}
#endif
#endif /* MLIBC_GLIBC_STDLIB_H */
@@ -0,0 +1,19 @@
#ifndef MLIBC_INLINE_DEFINITION_H
#define MLIBC_INLINE_DEFINITION_H
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __MLIBC_EMIT_INLINE_DEFINITIONS
#define __MLIBC_INLINE_DEFINITION
#else
#define __MLIBC_INLINE_DEFINITION __attribute__((__gnu_inline__)) extern __inline__
#endif
#ifdef __cplusplus
}
#endif
#endif /* MLIBC_INLINE_DEFINITION_H */
@@ -0,0 +1,49 @@
#ifndef _BITS_LINUX_CPU_SET_H
#define _BITS_LINUX_CPU_SET_H
#ifdef __cplusplus
extern "C" {
#endif
#include <bits/cpu_set.h>
#include <bits/size_t.h>
#include <limits.h>
#include <stdlib.h>
#ifndef __MLIBC_ABI_ONLY
cpu_set_t *__mlibc_cpu_alloc(int __num_cpus);
size_t __mlibc_cpu_alloc_size(int __num_cpus);
void __mlibc_cpu_zero(const size_t __setsize, cpu_set_t *__set);
void __mlibc_cpu_set(const int __cpu, const size_t __setsize, cpu_set_t *__set);
void __mlibc_cpu_clear(const int __cpu, const size_t __setsize, cpu_set_t *__set);
int __mlibc_cpu_isset(const int __cpu, const size_t __setsize, const cpu_set_t *__set);
int __mlibc_cpu_count(const size_t __setsize, const cpu_set_t *__set);
#define CPU_ALLOC_SIZE(n) __mlibc_cpu_alloc_size((n))
#define CPU_ALLOC(n) __mlibc_cpu_alloc((n))
#define CPU_FREE(set) free((set))
#define CPU_ZERO_S(setsize, set) __mlibc_cpu_zero((setsize), (set))
#define CPU_ZERO(set) CPU_ZERO_S(sizeof(cpu_set_t), set)
#define CPU_SET_S(cpu, setsize, set) __mlibc_cpu_set((cpu), (setsize), (set))
#define CPU_SET(cpu, set) CPU_SET_S(cpu, sizeof(cpu_set_t), set)
#define CPU_CLR_S(cpu, setsize, set) __mlibc_cpu_clear((cpu), (setsize), (set))
#define CPU_CLR(cpu, set) CPU_CLR_S(cpu, sizeof(cpu_set_t), set)
#define CPU_ISSET_S(cpu, setsize, set) __mlibc_cpu_isset((cpu), (setsize), (set))
#define CPU_ISSET(cpu, set) CPU_ISSET_S(cpu, sizeof(cpu_set_t), set)
#define CPU_COUNT_S(setsize, set) __mlibc_cpu_count((setsize), (set))
#define CPU_COUNT(set) CPU_COUNT_S(sizeof(cpu_set_t), set)
#endif /* !__MLIBC_ABI_ONLY */
#ifdef __cplusplus
}
#endif
#endif /* _BITS_LINUX_CPU_SET_H */
@@ -0,0 +1,63 @@
#ifndef _BITS_LINUX_SCHED_H
#define _BITS_LINUX_SCHED_H
#ifdef __cplusplus
extern "C" {
#endif
#include <abi-bits/pid_t.h>
#include <bits/size_t.h>
#include <bits/linux/cpu_set.h>
#define CLONE_VM 0x00000100
#define CLONE_FS 0x00000200
#define CLONE_FILES 0x00000400
#define CLONE_SIGHAND 0x00000800
#define CLONE_PIDFD 0x00001000
#define CLONE_PTRACE 0x00002000
#define CLONE_VFORK 0x00004000
#define CLONE_PARENT 0x00008000
#define CLONE_THREAD 0x00010000
#define CLONE_NEWNS 0x00020000
#define CLONE_SYSVSEM 0x00040000
#define CLONE_SETTLS 0x00080000
#define CLONE_PARENT_SETTID 0x00100000
#define CLONE_CHILD_CLEARTID 0x00200000
#define CLONE_DETACHED 0x00400000
#define CLONE_UNTRACED 0x00800000
#define CLONE_CHILD_SETTID 0x01000000
#define CLONE_NEWCGROUP 0x02000000
#define CLONE_NEWUTS 0x04000000
#define CLONE_NEWIPC 0x08000000
#define CLONE_NEWUSER 0x10000000
#define CLONE_NEWPID 0x20000000
#define CLONE_NEWNET 0x40000000
#define CLONE_IO 0x80000000
#define CLONE_CLEAR_SIGHAND 0x100000000ULL
#define CLONE_INTO_CGROUP 0x200000000ULL
#ifndef __MLIBC_ABI_ONLY
int sched_getscheduler(pid_t __pid);
int sched_setaffinity(pid_t __pid, size_t __cpusetsize, const cpu_set_t *__mask);
int sched_getaffinity(pid_t __pid, size_t __cpusetsize, cpu_set_t *__mask);
int unshare(int flags);
int clone(int (*)(void *), void *, int, void *, ...);
/* Glibc extension */
int sched_getcpu(void);
#if defined(_GNU_SOURCE)
int setns(int fd, int nstype);
#endif /* _GNU_SOURCE */
#endif /* !__MLIBC_ABI_ONLY */
#ifdef __cplusplus
}
#endif
#endif /* _BITS_LINUX_SCHED_H */
@@ -0,0 +1,20 @@
#ifndef _BITS_LINUX_STAT_H
#define _BITS_LINUX_STAT_H
#ifdef __cplusplus
extern "C" {
#endif
#include <abi-bits/statx.h>
#ifndef __MLIBC_ABI_ONLY
int statx(int __dirfd, const char *__pathname, int __flags, unsigned int __mask, struct statx *__statxbuf);
#endif /* !__MLIBC_ABI_ONLY */
#ifdef __cplusplus
}
#endif
#endif /* _BITS_LINUX_STAT_H */
@@ -0,0 +1,30 @@
#ifndef _BITS_LINUX_UIO_H
#define _BITS_LINUX_UIO_H
#include <abi-bits/pid_t.h>
#include <bits/posix/iovec.h>
#include <bits/ssize_t.h>
#include <mlibc-config.h>
#ifdef __cplusplus
extern "C" {
#endif
#ifndef __MLIBC_ABI_ONLY
ssize_t process_vm_readv(pid_t pid,
const struct iovec *local_iov, unsigned long liovcnt,
const struct iovec *remote_iov, unsigned long riovcnt,
unsigned long flags);
ssize_t process_vm_writev(pid_t pid,
const struct iovec *local_iov, unsigned long liovcnt,
const struct iovec *remote_iov, unsigned long riovcnt,
unsigned long flags);
#endif /* !__MLIBC_ABI_ONLY */
#ifdef __cplusplus
}
#endif
#endif /* _BITS_LINUX_UIO_H */
@@ -0,0 +1,21 @@
#ifndef _BITS_LINUX_UNISTD_H
#define _BITS_LINUX_UNISTD_H
#ifdef __cplusplus
extern "C" {
#endif
#ifndef __MLIBC_ABI_ONLY
int dup3(int __fd, int __newfd, int __flags);
int vhangup(void);
int getdtablesize(void);
int syncfs(int __fd);
#endif /* !__MLIBC_ABI_ONLY */
#ifdef __cplusplus
}
#endif
#endif /* _BITS_LINUX_UNISTD_H */
@@ -0,0 +1,71 @@
#ifndef _BITS_LINUX_UTMP_H
#define _BITS_LINUX_UTMP_H
#include <abi-bits/pid_t.h>
#include <abi-bits/utmp-defines.h>
#include <bits/posix/timeval.h>
#include <bits/types.h>
#ifdef __cplusplus
extern "C" {
#endif
#define UT_LINESIZE 32
#define UT_NAMESIZE 32
#define UT_HOSTSIZE 256
#define UTMP_FILENAME UTMP_FILE
#define WTMP_FILENAME WTMP_FILE
struct exit_status {
short int e_termination;
short int e_exit;
};
struct utmp {
short ut_type;
pid_t ut_pid;
char ut_line[UT_LINESIZE];
char ut_id[4];
char ut_user[UT_NAMESIZE];
char ut_host[UT_HOSTSIZE];
struct exit_status ut_exit;
long ut_session;
struct timeval ut_tv;
__mlibc_int32 ut_addr_v6[4];
char __unused[20];
};
struct lastlog {
time_t ll_time;
char ll_line[UT_LINESIZE];
char ll_host[UT_HOSTSIZE];
};
/* Hacks for compability reasons */
#define ut_name ut_user
#ifndef _NO_UT_TIME
#define ut_time ut_tv.tv_sec
#endif
#define ut_xtime ut_tv.tv_sec
#define ut_addr ut_addr_v6[0]
#ifndef __MLIBC_ABI_ONLY
void setutent(void);
struct utmp *getutent(void);
int getutent_r(struct utmp *__buf, struct utmp **__res);
void endutent(void);
struct utmp *pututline(const struct utmp *__line);
struct utmp *getutline(const struct utmp *__line);
struct utmp *getutid(const struct utmp *__id);
int utmpname(const char *__file);
void updwtmp(const char *wtmp_file, const struct utmp *ut);
#endif /* !__MLIBC_ABI_ONLY */
#ifdef __cplusplus
}
#endif
#endif /* _BITS_LINUX_UTMP_H */
+126
View File
@@ -0,0 +1,126 @@
#ifndef MLIBC_MACHINE_H
#define MLIBC_MACHINE_H
#include <stdint.h>
#if defined (__i386__)
struct __mlibc_jmpbuf_register_state {
uint32_t ebx;
uint32_t ebp;
uint32_t esi;
uint32_t edi;
uint32_t esp;
uint32_t eip;
};
#elif defined (__x86_64__)
struct __mlibc_jmpbuf_register_state {
uint64_t rbx;
uint64_t rbp;
uint64_t r12;
uint64_t r13;
uint64_t r14;
uint64_t r15;
uint64_t rsp;
uint64_t rip;
};
#elif defined (__aarch64__)
struct __mlibc_jmpbuf_register_state {
uint64_t x19;
uint64_t x20;
uint64_t x21;
uint64_t x22;
uint64_t x23;
uint64_t x24;
uint64_t x25;
uint64_t x26;
uint64_t x27;
uint64_t x28;
uint64_t x29;
uint64_t x30;
uint64_t sp;
uint64_t pad;
uint64_t d8;
uint64_t d9;
uint64_t d10;
uint64_t d11;
uint64_t d12;
uint64_t d13;
uint64_t d14;
uint64_t d15;
};
#elif defined (__riscv) && __riscv_xlen == 64
struct __mlibc_jmpbuf_register_state {
uint64_t ra;
uint64_t s0;
uint64_t s1;
uint64_t s2;
uint64_t s3;
uint64_t s4;
uint64_t s5;
uint64_t s6;
uint64_t s7;
uint64_t s8;
uint64_t s9;
uint64_t s10;
uint64_t s11;
uint64_t sp;
double fs0;
double fs1;
double fs2;
double fs3;
double fs4;
double fs5;
double fs6;
double fs7;
double fs8;
double fs9;
double fs10;
double fs11;
};
#elif defined (__m68k__)
struct __mlibc_jmpbuf_register_state {
uint32_t d2;
uint32_t d3;
uint32_t d4;
uint32_t d5;
uint32_t d6;
uint32_t d7;
uint32_t a2;
uint32_t a3;
uint32_t a4;
uint32_t a5;
uint32_t a6;
uint32_t a7;
uint32_t sp;
uint32_t pc;
};
#elif defined (__loongarch64)
struct __mlibc_jmpbuf_register_state {
uint64_t ra;
uint64_t sp;
uint64_t u0;
uint64_t s0;
uint64_t s1;
uint64_t s2;
uint64_t s3;
uint64_t s4;
uint64_t s5;
uint64_t s6;
uint64_t s7;
uint64_t s8;
double fs0;
double fs1;
double fs2;
double fs3;
double fs4;
double fs5;
double fs6;
double fs7;
};
#else
# error "Missing architecture specific code"
#endif
#endif /* MLIBC_MACHINE_H */
+12
View File
@@ -0,0 +1,12 @@
#ifndef MLIBC_MBSTATE_H
#define MLIBC_MBSTATE_H
typedef struct __mlibc_mbstate {
short __progress;
short __shift;
unsigned int __cpoint;
} mbstate_t;
#define __MLIBC_MBSTATE_INITIALIZER {0, 0, 0}
#endif /* MLIBC_MBSTATE_H */
+84
View File
@@ -0,0 +1,84 @@
#ifndef _NL_ITEM_H
#define _NL_ITEM_H
#ifdef __cplusplus
extern "C" {
#endif
typedef int nl_item;
#define ABDAY_1 0x60000
#define ABDAY_2 0x60001
#define ABDAY_3 0x60002
#define ABDAY_4 0x60003
#define ABDAY_5 0x60004
#define ABDAY_6 0x60005
#define ABDAY_7 0x60006
#define DAY_1 0x60007
#define DAY_2 0x60008
#define DAY_3 0x60009
#define DAY_4 0x6000A
#define DAY_5 0x6000B
#define DAY_6 0x6000C
#define DAY_7 0x6000D
#define ABMON_1 0x6000E
#define ABMON_2 0x6000F
#define ABMON_3 0x60010
#define ABMON_4 0x60011
#define ABMON_5 0x60012
#define ABMON_6 0x60013
#define ABMON_7 0x60014
#define ABMON_8 0x60015
#define ABMON_9 0x60016
#define ABMON_10 0x60017
#define ABMON_11 0x60018
#define ABMON_12 0x60019
#define MON_1 0x6001A
#define MON_2 0x6001B
#define MON_3 0x6001C
#define MON_4 0x6001D
#define MON_5 0x6001E
#define MON_6 0x6001F
#define MON_7 0x60020
#define MON_8 0x60021
#define MON_9 0x60022
#define MON_10 0x60023
#define MON_11 0x60024
#define MON_12 0x60025
#define AM_STR 0x60026
#define PM_STR 0x60027
#define D_T_FMT 0x60028
#define D_FMT 0x60029
#define T_FMT 0x6002A
#define T_FMT_AMPM 0x6002B
#define ERA 0x6002C
#define ERA_D_FMT 0x6002D
#define ALT_DIGITS 0x6002E
#define ERA_D_T_FMT 0x6002F
#define ERA_T_FMT 0x60030
#define CODESET 0x30000
#define CRNCYSTR 0x40000
#define RADIXCHAR 0x50000
#define DECIMAL_POINT RADIXCHAR
#define THOUSEP 0x50001
#define THOUSANDS_SEP THOUSEP
#define YESEXPR 0x70000
#define NOEXPR 0x70001
#ifdef __cplusplus
}
#endif
#endif /* _NL_ITEM_H */
+16
View File
@@ -0,0 +1,16 @@
#ifndef MLIBC_NULL_H
#define MLIBC_NULL_H
#ifdef NULL
#undef NULL
#endif
#ifndef __cplusplus
# define NULL ((void *)0)
#else
# define NULL 0
#endif
#endif /* MLIBC_NULL_H */
+8
View File
@@ -0,0 +1,8 @@
#ifndef MLIBC_OFF_T_H
#define MLIBC_OFF_T_H
/* TODO: use something like int64_t instead? */
typedef long off_t;
typedef long off64_t;
#endif /* MLIBC_OFF_T_H */
+10
View File
@@ -0,0 +1,10 @@
#ifndef MLIBC_FD_SET_H
#define MLIBC_FD_SET_H
#include <bits/types.h>
typedef struct {
__mlibc_uint8 fds_bits[128];
} fd_set;
#endif /* MLIBC_FD_SET_H */
+6
View File
@@ -0,0 +1,6 @@
#ifndef _MLIBC_ID_T_H
#define _MLIBC_ID_T_H
typedef unsigned int id_t;
#endif /* _MLIBC_ID_T_H */
@@ -0,0 +1,8 @@
#ifndef MLIBC_IN_ADDR_H
#define MLIBC_IN_ADDR_H
#include <stdint.h>
typedef uint32_t in_addr_t;
#endif /* MLIBC_IN_ADDR_H */
@@ -0,0 +1,8 @@
#ifndef MLIBC_IN_PORT_H
#define MLIBC_IN_PORT_H
#include <stdint.h>
typedef uint16_t in_port_t;
#endif /* MLIBC_IN_PORT_H */
+11
View File
@@ -0,0 +1,11 @@
#ifndef MLIBC_IOVEC_H
#define MLIBC_IOVEC_H
#include <bits/types.h>
struct iovec {
void *iov_base;
__mlibc_size iov_len;
};
#endif /* MLIBC_IOVEC_H */
@@ -0,0 +1,14 @@
#ifndef _LOCALE_T_H
#define _LOCALE_T_H
#ifdef __cplusplus
extern "C" {
#endif
typedef void *locale_t;
#ifdef __cplusplus
}
#endif
#endif /* _LOCALE_T_H */
@@ -0,0 +1,36 @@
#ifndef _POSIX_CTYPE_H
#define _POSIX_CTYPE_H
#ifdef __cplusplus
extern "C" {
#endif
#include <bits/posix/locale_t.h>
#ifndef __MLIBC_ABI_ONLY
int isalnum_l(int __c, locale_t __loc);
int isalpha_l(int __c, locale_t __loc);
int isblank_l(int __c, locale_t __loc);
int iscntrl_l(int __c, locale_t __loc);
int isdigit_l(int __c, locale_t __loc);
int isgraph_l(int __c, locale_t __loc);
int islower_l(int __c, locale_t __loc);
int isprint_l(int __c, locale_t __loc);
int ispunct_l(int __c, locale_t __loc);
int isspace_l(int __c, locale_t __loc);
int isupper_l(int __c, locale_t __loc);
int isxdigit_l(int __c, locale_t __loc);
int isascii_l(int __c, locale_t __loc);
int tolower_l(int __c, locale_t __loc);
int toupper_l(int __c, locale_t __loc);
#endif /* !__MLIBC_ABI_ONLY */
#ifdef __cplusplus
}
#endif
#endif /* _POSIX_CTYPE_H */
@@ -0,0 +1,23 @@
#ifndef MLIBC_POSIX_LOCALE_H
#define MLIBC_POSIX_LOCALE_H
#include <bits/posix/locale_t.h>
#ifdef __cplusplus
extern "C" {
#endif
#ifndef __MLIBC_ABI_ONLY
locale_t newlocale(int __category_mask, const char *__locale, locale_t __base);
void freelocale(locale_t __locobj);
locale_t uselocale(locale_t __locobj);
locale_t duplocale(locale_t __locobj);
#endif /* !__MLIBC_ABI_ONLY */
#ifdef __cplusplus
}
#endif
#endif /* MLIBC_POSIX_LOCALE_H */

Some files were not shown because too many files have changed in this diff Show More