Bananymous
d8a695a88d
Kernel: Don't fail ustar unpack when creation fails
2025-08-05 03:09:24 +03:00
Bananymous
7a054787ca
Kernel: Don't print error if `root` is empty
...
This is used when loading filesystem from initrd
2025-07-18 19:09:43 +03:00
Bananymous
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
Bananymous
8a0269d29e
Kernel: Remove kernel processes
...
Kernel can just use raw threads, pretty muchs the only thing that
process provides is syscalls which kernel threads of course don't
need.
Also this makes init process have pid 1 :D
2025-07-02 01:54:03 +03:00
Bananymous
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
Bananymous
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
Bananymous
107b092982
Kernel: Allow arbitrary sized tmpfs files
...
The 2 block limit started to get annoying :D
2025-07-02 00:17:42 +03:00
Bananymous
bac06e45a4
Kernel: Fix TmpSymlinkInode target getting/setting
2025-07-02 00:17:42 +03:00
Bananymous
0e8a68831c
Kernel: Fix TmpInode chmod not preserving file type
2025-07-02 00:17:42 +03:00
Bananymous
5912abd541
Kernel: Add error reporting for readonly mounted filesystems
2025-07-02 00:17:42 +03:00
Bananymous
c8c05f62b4
Kernel: Remove unused FileSystem::dev
2025-06-29 00:29:03 +03:00
Bananymous
ebf2b16d09
Kernel: Implement chown to ext2 and tmpfs
2025-06-28 21:28:54 +03:00
Bananymous
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
Bananymous
e109b5cff6
Kernel: Remove unnecessary locks from Pipe
...
Inode already locks its own mutex when read/write is called there is no
need to explicitly lock them in read_impl/write_impl
2025-06-02 11:39:18 +03:00
Bananymous
1bd454b8fd
Kernel/LibC: Implement utime* family functions
...
This patch adds *working*
- utime
- utimes
- utimensat
- futimens
2025-06-01 13:48:03 +03:00
Bananymous
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
Bananymous
12b93567f7
Kernel/LibC: Implement `getpeername`
2025-05-28 03:10:01 +03:00
Bananymous
0e0d7016b3
Kernel: Rename has_hangup -> has_hungup
2025-05-17 12:39:23 +03:00
Bananymous
553c76ab0f
Kernel: Add locking to inode's epoll list
...
This was prone to crashing :)
2025-05-17 12:36:36 +03:00
Bananymous
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
Bananymous
201d752850
Kernel: Allow pipe to write partial data
...
This allows potential blocking
2025-04-19 00:39:42 +03:00
Bananymous
703c1a485c
Kernel: Fix Ext2 bug for big files
...
My ext2 implementation was reading wrong blocks for very big block
indices.
2025-04-18 04:17:31 +03:00
Bananymous
7a10e0e347
Kernel: Fix TmpFS inode linking
...
TmpFS now looks for empty entries in directories instead of always
appending files to the end of directories. This makes kernel not crash
after process pid 126 is created :D
2025-01-28 17:06:35 +02:00
Bananymous
d189f00f38
Kernel: Null terminate tmpfs directory entries
2025-01-12 16:03:09 +02:00
Bananymous
1815a913c3
Kernel: Remove unnecessary hash map lookups
2024-12-15 20:47:40 +02:00
Bananymous
71a2d0971f
Kernel: Remove unnecessary reverse from VFS file search
2024-12-07 01:41:23 +02:00
Bananymous
3bf57e0748
Kernel: Add . and .. entries to /proc/<pid> directories
...
This allows to run `cd ..` in one of these directories
2024-12-07 01:37:40 +02:00
Bananymous
49133dce48
Kernel: Make pipe check data every 100ms
...
This prevents dead lock if read-end does not detect data before blocking
why write-end already notified.
2024-12-03 21:54:27 +02:00
Bananymous
67e9ca56ac
Kernel: Create /dev/urandom -> /dev/random symlink
...
Most software uses urandom instead of random so this allows it work
normally.
2024-12-03 16:12:26 +02:00
Bananymous
713daf6cd3
Kernel/LibC: Add support for creating hardlinks
2024-12-03 16:12:26 +02:00
Bananymous
415b20f884
LibC: Remove errno EEXISTS
...
I don't know why I had added this. It doesn't seem to be a thing on
either POSIX or linux. This was literally equivalent to EXIST
2024-12-02 20:13:38 +02:00
Bananymous
d58ca5f37a
Kernel/LibC: Implement symlink{,at}
2024-12-02 20:13:38 +02:00
Bananymous
a10ca47657
Kernel/LibC: Implement {,f}statvfs
2024-12-02 20:13:37 +02:00
Bananymous
747c3b2a4b
Kernel/LibC: Implement fsync
2024-12-02 20:13:37 +02:00
Bananymous
3573656244
Kernel: Make PARTUUID matching case insensitive
...
Case sensitivity made it super annoying to work with :)
2024-11-21 20:39:27 +02:00
Bananymous
1de6de975a
Kernel: Rename cmdline UUID= to PARTUUID=
...
This makes more sense and behaves more like existing software.
2024-11-21 20:38:50 +02:00
Bananymous
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
Bananymous
8054f6c618
Kernel: Wait 10 seconds to find root device
...
If root device is initialized asynchronously it may not be ready when
main initialization thread is finished. This patch adds searching for
root device every 500 ms for 10 seconds.
2024-11-21 17:56:58 +02:00
Bananymous
a3f41fd4d9
Kernel: Cleanup disk cache
...
Add missing include and cleanup code calling automatic disk sync.
2024-11-03 20:28:15 +02:00
Bananymous
55fbd09e45
Kernel: Rewrite physical memory allocation with PageTable::fast_pages
2024-10-14 11:32:54 +03:00
Bananymous
166550fbba
Kernel: Ext2 check if file exists before creating it
2024-10-07 18:21:05 +03:00
Bananymous
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
Bananymous
97ee370ffe
Kernel: Allow listing files even if one of directories blocks are empty
2024-09-17 15:53:14 +03:00
Bananymous
6060b39548
Kernel: Implement relative file searching in VFS
2024-09-14 19:44:20 +03:00
Bananymous
2b52ea4c6f
Kernel: Make Inode::can_access const
2024-09-14 19:39:41 +03:00
Bananymous
57e76a65a4
Kernel: Null terminate ext2 directory entries
...
This fixes a weird bug with `ls /bin`
2024-09-12 23:55:34 +03:00
Bananymous
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
Bananymous
23194d1f53
Kernel: Implement basic random device to /dev/random
2024-08-22 14:02:26 +03:00
Bananymous
066e8e1cc2
Kernel: Remove unnecessary debug logging from VFS initialization
2024-08-18 20:51:10 +03:00
Bananymous
957df08932
Kernel: root command line option can be specified as an UUID
...
Format is the same as in linux
root=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
This makes it easier to boot when computer has multiple disks installed
2024-08-14 13:23:27 +03:00