c849293f3d
Kernel: Add support for loading gzip compressed initrd
2026-04-13 16:48:57 +03:00
c1a424a635
Kernel: Implement linux's eventfd
2026-03-17 20:24:06 +02:00
8b8af1a9d9
Kernel: Rewrite pipes using the new ring buffer
2026-02-28 14:20:52 +02:00
a51a81b6cd
Kernel: Move {set,get}sockopt to sockets
...
Sockets can now actually implement socket options :D
2026-02-08 19:27:16 +02:00
5637b8602b
Kernel: Fix setting ext2 symbolic link target
...
If a link was >= 60 bytes but got shrinked to 60 bytes, reading it would
rebort garbage and unlinking it would leak blocks
2026-01-11 03:58:48 +02:00
ed82a18e2a
Kernel: Fix deadlock in ext2 filesystem
...
If multiple threads were waiting for more block buffers without anyone
releasing them, they ended up in a deadlock.
Now we store 6 blocks for 8 threads. If a thread already has a block
buffer, it will not have to wait for a new one. Only if there are more
than 8 threads using blocks, will it block until there are free slots
for a thread available.
2026-01-10 00:30:30 +02:00
e26aac3067
Kernel: Decrease the number of syncs done by ext2 inodes
...
Each allocated inode used to call sync(). Each sync reads and writes
a block from the filesystem. Doing a 1 MiB write ended up syncing around
257 times
2026-01-01 23:54:09 +02:00
941e8aa5d5
Kernel: Optimize ext2 filesystem
...
block lookup can now also allocate blocks so there is no need to do
multiple lookups of the block did not exist
2026-01-01 23:15:35 +02:00
9d0990e5e8
Kernel: Implement /proc/<n>/fd
2025-11-24 00:19:51 +02:00
4ec8f4a4bf
Kernel/LibC: Implement rename{,at}
2025-11-22 23:55:10 +02:00
04d24bce70
Kernel/LibC: Implement {recv,send}msg as syscalls
...
This also removes the now old recvfrom and sendto syscalls. These are
now implemented as wrappers around recvmsg and sendmsg.
Also replace unnecessary spinlocks from unix socket with mutexes
2025-11-10 01:40:33 +02:00
da39e98adf
Kernel: Make F11 drop disk cache
...
This can be useful to detect memory leaks or something
2025-08-31 00:36:59 +03:00
30215963b2
Kernel: Fix /proc/<pid>/exe permissions
2025-08-29 01:40:56 +03:00
391fc0c4c2
Kernel: Don't crash if Ext2 filesystem doing too many fileops
...
I had a hardlimit of 10 block buffers and if they ran out, the kernel
would crash. this patchs increases the number of buffers to 16 and
removes the crash condition when they run out :D
2025-08-28 15:55:40 +03:00
51cd951b4c
Kernel: Add hardlink support to tmpfs
2025-08-28 15:55:40 +03:00
e4abe75043
Kernel: Add /proc/self
2025-08-28 15:55:40 +03:00
ef6ee78fd1
Kernel/LibC: Implement chroot
2025-08-11 14:07:37 +03:00
f1369c8fd6
Kernel/LibC: Implement mprotect
...
There may be some race conditions with this but i think this is good
enough to start with
2025-08-05 03:09:24 +03:00
5874fd640e
Kernel: Fix TmpFS for 32 bit target
...
There was a problem when sizeof(size_t) != sizeof(PageInfo)
2025-07-18 19:07:32 +03:00
a5b4cee298
Kernel: Load USTAR from a boot module if loading root partition fails
...
This allows banan-os to boot on hardware where we don't have working
storage driver or the storage driver fails (pretty common with my usb
mass storage drivers...)
2025-07-02 00:17:42 +03:00
c67198032f
Kernel: Rewrite TmpFS block and inode allocation
...
This makes creating files and appending to then A LOT faster. Some code
I tested took 40 seconds in the previous implementation and less than a
second on the new one!
This code is really sketcy, I hope I'll never have to touch it again :)
2025-07-02 00:17:42 +03:00
107b092982
Kernel: Allow arbitrary sized tmpfs files
...
The 2 block limit started to get annoying :D
2025-07-02 00:17:42 +03:00
bac06e45a4
Kernel: Fix TmpSymlinkInode target getting/setting
2025-07-02 00:17:42 +03:00
c8c05f62b4
Kernel: Remove unused FileSystem::dev
2025-06-29 00:29:03 +03:00
ebf2b16d09
Kernel: Implement chown to ext2 and tmpfs
2025-06-28 21:28:54 +03:00
eecdad50a6
Kernel: Fix most of mutex + block race conditions
...
All block functions now take an optional mutex parameter that is
atomically unlocked instead of having the user unlock it before hand.
This prevents a ton of race conditions everywhere in the code!
2025-06-06 03:59:22 +03:00
9f4b451501
Kernel: Fix epoll deadlock
...
If epoll_wait and epoll_notify were called at the same time, there was a
possible deadlock when epoll was confirming the event from the inode
2025-06-01 13:48:03 +03:00
1bd454b8fd
Kernel/LibC: Implement utime* family functions
...
This patch adds *working*
- utime
- utimes
- utimensat
- futimens
2025-06-01 13:48:03 +03:00
4d4fb3b6ec
Kernel: Cleanup and fix pipe
...
pipe now sends SIGPIPE and returns EPIPE when writing and no readers are
open
2025-05-29 01:02:22 +03:00
12b93567f7
Kernel/LibC: Implement getpeername
2025-05-28 03:10:01 +03:00
0e0d7016b3
Kernel: Rename has_hangup -> has_hungup
2025-05-17 12:39:23 +03:00
553c76ab0f
Kernel: Add locking to inode's epoll list
...
This was prone to crashing :)
2025-05-17 12:36:36 +03:00
1bcd1edbf5
Kernel/LibC: Implement basic epoll
...
This implementation is on top of inodes instead of fds as linux does it.
If I start finding ports/software that relies on epoll allowing
duplicate inodes, I will do what linux does.
I'm probably missing multiple epoll_notify's which may cause hangs but
the system seems to work fine :dd:
2025-05-13 10:18:05 +03:00
15045cc486
Kernel: Make nonblocking sockets unblocking :)
2025-04-05 18:42:02 +03:00
713daf6cd3
Kernel/LibC: Add support for creating hardlinks
2024-12-03 16:12:26 +02:00
d58ca5f37a
Kernel/LibC: Implement symlink{,at}
2024-12-02 20:13:38 +02:00
a10ca47657
Kernel/LibC: Implement {,f}statvfs
2024-12-02 20:13:37 +02:00
747c3b2a4b
Kernel/LibC: Implement fsync
2024-12-02 20:13:37 +02:00
865061b492
Kernel: Temporary fix to make tmpfs more stable
...
whole TmpFS will have to be rewritten at some point :)
2024-11-21 18:13:26 +02:00
d59463d11b
Kernel: Fix TTY reading one keyevent after disabling input handling
2024-09-22 17:13:10 +03:00
d4ea720239
Kernel: Don't crash the kernel if ext2 encounters disk error
...
This will most likely result in a corrupted filesystem, but crashing the
kernel is too much :D
2024-09-17 15:54:33 +03:00
7feb4c4ebd
Kernel: VFS::file_from_absolute_path now used root_file() API
2024-09-15 02:38:25 +03:00
8956835d95
Kernel: Make sys_.*at use VFS relative path finding
2024-09-14 21:15:58 +03:00
3a352078de
Kernel: Make VirtualFileSystem::File non copyable
2024-09-14 20:09:28 +03:00
6060b39548
Kernel: Implement relative file searching in VFS
2024-09-14 19:44:20 +03:00
2b52ea4c6f
Kernel: Make Inode::can_access const
2024-09-14 19:39:41 +03:00
467ac6c365
Kernel/LibC: Implement SOCK_CLOEXEC and SOCK_NONBLOCK
...
This removes the need for fcntl after creating a socket :)
2024-09-11 21:59:11 +03:00
c77ad5fb34
Kernel: Implement copy-on-write memory for file backed mmaps
2024-09-11 19:33:50 +03:00
bac3219a01
Kernel: Fix Pipe::can_read_impl()
...
The logic was inversed, which made all select calls report incorrectly
for pipes. This made terminal emulator just freeze.
2024-08-10 18:18:25 +03:00
b6c964c444
Kernel: Rewrite pipes
...
Pipes have now a fixed size buffer and pipe clone and close is working
again.
2024-08-09 16:50:19 +03:00