fe2c9f7d2d
LibC: Rewrite malloc
...
The old linked list allocator with power of two pool sizes was kinda
weird. Now we use 1MiB bitmap allocators for allocations <64KiB and
directly call mmap for larger allocations. This allows userspace to
actually free unused memory on `free` :)
2026-05-15 17:03:33 +03:00
d7cdf3818c
LibC: Make aio.h incudable in C++
...
aio stuff is not supported but now the header is at least includable in
C++ which was not possible before as __restrict was not allowed in array
size
2026-05-15 17:03:33 +03:00
6a2f041858
LibC: Handle negative size in fgets
2026-05-15 17:03:33 +03:00
f0c5fb3a87
LibC: Don't use ScopeGuard in exec
...
These ended up pulling `operator delete` which is not available when
linking with gcc :^)
2026-05-15 17:03:33 +03:00
d345f96387
LibC: Optimize qsort
...
Apply same optimizations as to BAN quick sort!
2026-05-13 04:37:25 +03:00
47650980f2
LibC: Reorder stack trace dump printing
...
If we fault while getting start of stack frame at least we now print
that we were trying to get the stack trace :^)
2026-05-05 13:54:51 +03:00
4b12770485
LibC: Don't leak FILEs on failed shebang exec
2026-05-05 13:52:52 +03:00
ba106f6bf5
LibC: Update argv[0] for shebang scripts to full path
...
This is needed so `dirname -- "$0"` works with shebang scripts found in
PATH
2026-05-05 12:48:04 +03:00
28499b890c
LibC: Mark exit as noreturn
2026-05-04 20:26:02 +03:00
fde085e04b
Kernel: Pass current cpu index as a GDT limit
...
I had no idea LSL was an instruction. This cleans up code to get the
current cpu by a lot and does not require extra segment usage :D
2026-05-04 20:26:02 +03:00
bef53c726b
Userspace: Install libdl, libm, libpthread as symlinks to libc
...
Having dummy libraries was just unnecessary
2026-04-21 21:46:00 +03:00
eea0154f18
LibC: Cleanup RNG and properly initialize to srand(1) at startup
2026-04-21 00:26:41 +03:00
ea4c34fc0b
LibC: Fix printf thread safety
...
I don't know why I was using a static buffer for value conversions :D
2026-04-21 00:25:56 +03:00
558ed8fd44
LibC: Define pthread_{equal,self} as macros
...
These really should get inlined :D
2026-04-21 00:25:16 +03:00
a24ec0da2b
LibC: Don't complain about stack size until 8192 bytes
...
It was unnecessary as userspace stack is way bigger than that...
2026-04-19 17:52:21 +03:00
e6284c3cf3
LibC/Kernel: Bump PATH_MAX to 4096
2026-04-19 17:52:21 +03:00
f527aca9d0
LibC: add strcasestr to string.h
2026-04-19 17:52:21 +03:00
5fce3b64cc
LibC: implemented strptime (partially)
2026-04-17 21:05:58 +03:00
c04ad65f7f
LibC: Add mbsinit and wcsrtombs stubs
2026-04-17 18:40:18 +03:00
aaade52146
LibC: Use __builtin_thread_pointer for _get_uthread()
...
This generates much nicer assembly as it does not have to read thread
pointer for every access to TCB (errno, cancel_state, cancelled) and
instead it can read it once and use the same value for all accesses
2026-04-15 17:32:43 +03:00
ad12bf3e1d
LibC: Cleanup environment variable code
2026-04-13 00:36:13 +03:00
ac6e6f3ec1
Kernel: Add ioctl to sync rectangular areas in framebuffer
...
msync is not really the best API for framebuffer synchronization
2026-04-11 08:29:10 +03:00
2a9dad2dd8
LibC: Add SSE2 non-temporal memset and memcpy
...
Also cleanup other assembly by using local labels to emit them from the
assembled program.
2026-04-11 03:30:52 +03:00
7333008f40
LibC: Use IP instead of si_addr for faulting instruction
...
si_addr only means faulting instruction for SIGILL. For SIGSEGV it is
the faulting memory address.
2026-04-11 03:30:52 +03:00
2f9b8b6fc9
Kernel/LibC: Rework userspace syscall interface
...
Kernel syscall API no longer zeros all unused argument registers and
libc now uses inlined syscall macro internally. This significantly
cleans up generated code for basic syscall wrapper functions.
2026-04-11 03:30:52 +03:00
80c4213501
LibC: Make errno macro directly access uthread
...
This allows inlining errno usages
This breaks libc ABI and requires toolchain rebuild
2026-04-11 03:30:32 +03:00
e0af23a924
LibC: Move uthread definition to its own header
...
Use `__asm__` instead of `asm` to allow compilation with --std=c99 and
before
2026-04-11 03:30:32 +03:00
7fb27b16e8
LibC: Fix pthread cancellation
...
Install SIGCANCEL handler for all threads.
Remove unneeded atomic stores and loads. States are only changed within
the thread itself.
Define pthread_testcancel as a macro so it gets inlined inside
cancellation points
2026-04-07 03:41:25 +03:00
34b59f062b
LibC: Implement blocking pthread_rwlock
...
pthread_rwlock now uses a mutex and condition variable internally so it
doesn't need to yield while waiting!
2026-04-06 19:29:34 +03:00
ec4aa8d0b6
LibC: Fix shared pthread_barrier init
...
Initialize internal lock and cond as shared when the barrier is shared
2026-04-05 12:06:18 +03:00
1eebe85071
LibC: Fix pthread_cond_timedwait
...
If timeout occurred, I was not removing the entry from block list
2026-04-05 11:31:16 +03:00
db0507e670
LibC: Mark pthread_exit noreturn
2026-04-05 11:30:45 +03:00
85f676c30a
DynamicLoader: Calulate max loaded file count based on dtv size
...
dtv should be dynamic but i dont care right now :)
2026-04-04 23:48:43 +03:00
c7690053ae
LibC: Don't crash on 32 bit pthread_create
2026-04-04 23:48:43 +03:00
32806a5af3
LibC: Allow "t" in stdio mode
2026-04-02 15:44:50 +03:00
876fbe3d7c
LibC: Fix sem_{,timed}wait
2026-04-02 15:43:34 +03:00
c1b8f5e475
LibC: Add and cleanup network definitions
2026-04-02 15:42:00 +03:00
cf31ea9cbe
LibC: Add _SC_PHYS_PAGES and _SC_AVPHYS_PAGES
2026-04-02 15:41:26 +03:00
7e6b8c93b4
LibC: Implement strsep
2026-04-02 15:40:23 +03:00
dd2bbe4588
LibC: Implement sched_getcpu
2026-04-02 15:39:36 +03:00
e01e35713b
LibC: Allow including assert.h multiple times
...
Some shit seems to depend on this
2026-04-02 15:38:06 +03:00
82d5d9ba58
LibC: Write memchr, memcmp and strlen with sse
2026-04-02 15:35:03 +03:00
5647cf24d2
Kernel: Implement volume control to audio drivers
2026-04-02 15:14:27 +03:00
d9ca25b796
LibC: Add FNM_CASEFOLD and FNM_IGNORECASE
...
These are part of POSIX issue 8
2026-03-25 04:27:00 +02:00
e9c81477d7
BAN/LibC: Implement remainder
...
This is basically just fmod but with fprem1 instead of fprem
2026-03-25 01:06:45 +02:00
14f1c1a358
LibC: Implement vsyslog
2026-03-23 19:13:38 +02:00
6a77754adf
LibC: Don't link against libstdc++
...
This prevented building the toolchain
2026-03-23 18:22:42 +02:00
7d7d5ba734
LibC: Compile eventfd file
2026-03-23 18:22:04 +02:00
43e18148a6
LibC: Define SSP things
2026-03-17 20:30:25 +02:00
b0db645248
LibC: Add basic elf.h
2026-03-17 20:25:38 +02:00