1922d78661
Kernel: Add support for mkfifo{,at} mkdir at
...
Opening FIFOs still dont work as expected but at least you can create
them now :D
2026-05-18 23:53:09 +03:00
6d1ecc2388
Kernel: Clean up file creation
2026-05-18 15:26:59 +03:00
5cf658c175
Kernel: Fix 2 memory pinning bugs
...
If pinning a region succeeded but pushing the region to a vector failed,
we would leak the pin preventing the process from cleaning up
2026-05-17 03:38:18 +03:00
ef2738bfb7
Kernel: Disable devfs device add/remove logging
2026-05-17 03:38:18 +03:00
d7865b2929
Kernel: Don't msync file backed pages that were never mapped writable
2026-05-17 03:21:08 +03:00
9c79971bdc
LibC/Kernel: Add support for detached pthreads
2026-05-17 00:40:56 +03:00
ff75c15ba3
LibC: Move pthread keys to TCB
...
This removes all TLS relocations from libc which may become handy ;)
2026-05-17 00:29:20 +03:00
9e6fa0a1ba
Kernel: Add fast path for invalid address during region pin
...
Before I was falling through to the write lock which does allocation,
but as the read loop already saw, specified address was not mapped.
2026-05-17 00:29:20 +03:00
6e95519acc
Kernel: Make TTY write lock a mutex instead of a spinlock
...
The mutex could not be locked while processing ANSI DGR in VTTY
2026-05-17 00:29:20 +03:00
d081655913
Kernel: Add API for mutex to check if it is locked by current thread
...
Also add assertion that you have interrupts enabled :^)
2026-05-17 00:29:20 +03:00
9c3eb8d270
userspace: Implement tr utility
2026-05-17 00:29:20 +03:00
68479bf07e
userspace: Fix getopt_long usage
...
- Add missing null entry after the last long option
- Don't duplicate illegal option message, getopt already prints
the message as I do not suppress it. Also handle missing arguments.
2026-05-17 00:29:20 +03:00
d528314ae3
Kernel: Make SYS_FUTEX restartable
2026-05-17 00:29:20 +03:00
40dd29b876
LibC: Cleanup syscall macros
2026-05-17 00:29:20 +03:00
dc1d7e3fae
ls: Print total field with -l
2026-05-15 22:46:50 +03:00
8f8ba2751c
ls: Add support for -A and -h
2026-05-15 22:35:58 +03:00
928d3e3fe7
dirname: Fix help message
2026-05-15 22:34:48 +03:00
4ef7b8e71c
Kernel: AFG reset return value
2026-05-15 21:38:23 +03:00
1fcd72e578
Kernel: replaced is_partition/storage with kind
2026-05-15 21:37:18 +03:00
5e1b5c329b
Kernel: Allow HDA stream reset to timeout
...
This was hanging on some version of qemu :^)
2026-05-15 21:30:41 +03:00
b2f795b1e1
Kernel: Pipe ignore tc attr ioctls
2026-05-15 21:23:19 +03:00
16967cd9c0
Kernel: Replace is_* with kind field
...
Replaced the is_* virtual functions with a kind field instead
2026-05-15 21:23:12 +03:00
647d6a273d
Kernel: Changed stat values from func to be field
...
- Removed virtual functions for all of the stat stuff.
This did however introduce some issues, mainly with /proc
becoming out of sync if you changed your ID. I propose we
do the linux thing and just have a stat update function
which is optional, but allows dynamic updates of stat fields
for cases such as those in uid/gid in /proc.
- Simplified the API, although still kind of annoying
it is a bit simpler.
- Moved some of the FS structure from having the FS inode inside
the in memory inode to a Serialise <-> Deserialise model where
Inodes are deserialised from disk into in memory ones and then
back into on disk ones when it comes time for syncing.
This makes it semantically better in my opinion, as it explicitly
separates disk and non-disk functionality.
2026-05-15 20:49:04 +03:00
bf2121e166
LibC: Implement tc{get,set}winsize
...
These were added in POSIX issue 8 :^)
2026-05-15 17:08:02 +03:00
05c9f0640c
Kernel/LibC: Replace terminal syscalls with ioctls
...
isatty, tc{get,set}attr, tc{get,set}pgrp are now implemented as ioctls
instead of separate syscalls
2026-05-15 17:03:33 +03:00
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
28b873b949
Kernel: Allow recursive rwlock write lock
2026-05-15 17:03:33 +03:00
c352fb600f
Kernel: Reduce ext2 locking
...
Replace the mutex with a rwlock and lock when its not necessary
2026-05-14 17:23:06 +03:00
dd8a9b1793
Kernel: clamp msync address range instead of calling contains
2026-05-13 20:03:37 +03:00
212ab010a5
BAN: Expose radix sort with user provided buffer
...
This can be nice if user has memory for a the temporary buffer and
doesnt want the sorting to allocate or be able to fail.
Also counts are now stack allocated, there isn't really any reason to
allocate them on the heap as 256x 64 bit values only adds up to 2 KiB
2026-05-13 05:05:11 +03:00
d345f96387
LibC: Optimize qsort
...
Apply same optimizations as to BAN quick sort!
2026-05-13 04:37:25 +03:00
d181f9e553
BAN: Optimize quick sort
...
We now use the middle element as the pivot and do three way partitioning
to improve sorting with equivalent elements
2026-05-13 04:31:31 +03:00
5f237abc3b
Kernel: Don't lock Ext2FS while reading and writing blocks
...
There is really no reason for this. The underlying block devices are
(should be) thread safe themselves
2026-05-09 23:28:00 +03:00
0bf7328e04
Kernel: Handle TIOC{G,S}WINSZ on pipes
...
GCC likes to do this a lot and debug logging is excessive
2026-05-09 23:28:00 +03:00
9f4271f6d8
Kernel: Remove the big inode lock
...
This moves locking to the inodes themselves which allows reducing lock
times significantly. Main inodes (ext2 and tmpfs) still do contain a
single big mutex that gets locked during operations but now we have the
architecture to optimize these.
2026-05-09 23:28:00 +03:00
a7356716ff
Kernel: Reduce locking FileBackedRegions
2026-05-09 15:08:26 +03:00
912647ce68
Shell: Fix type builtin PATH resolution
...
We were not adding a '/' between PATH dir and the command
2026-05-06 17:30:43 +03:00
d2e21f9380
Kernel: Fix 64 bit page table range reservation from lower->higher half
2026-05-06 17:30:43 +03:00
443be800b7
Kernel: Fix remote TLB shootdown for <= 32 pages
...
I was modifying the `vaddr` argument while invalidating which lead to
the smp message containing wrong virtual address. This showed up in
really weird bugs from invalid TLB
2026-05-06 17:30:43 +03:00
3ac955714b
Kernel: Optimize FileBackedRegion CoW
...
Just copy data from the existing page instead of locking inode's shared
data, copying to temporary buffer and finally copying to destination
2026-05-06 17:30:43 +03:00
62f5292f38
Kernel: Send only one TLB invalidation when creating a ByteRingBuffer
2026-05-06 17:30:43 +03:00
7553ede3b4
Kernel: Send only one TLB invalidation when creating a VirtualRange
2026-05-06 00:27:26 +03:00
eba97c1fc7
Kernel: Avoid possible dead lock while sending smp messages
...
Process own events while waiting for space on another processor. This
fixes a dead lock when processors are sending messages to each other
2026-05-06 00:09:05 +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
3a05a29294
dirname: Support options and multiple strings
...
This is not needed by POSIX but sdl2-config uses `dirname -- "$0"`
2026-05-05 01:42:28 +03:00