Bananymous
348d04f7f5
Kernel: Implement static Process::kill()
...
This allows killing processes even when there does not exist a current
thread.
2024-09-24 13:16:43 +03:00
Bananymous
d395cf38b7
Kernel: Binding to port 0 will always find unused port
2024-09-22 17:30:01 +03:00
Bananymous
57aec2a733
Kernel: Validate pointer's when printing stack trace
...
There was an kernel panic if stack trace contained uncanonical
addresses.
2024-09-22 17:16:01 +03:00
Bananymous
ae89237453
Kernel: Disable warning when calling syscall
...
This warning is only generated when compiling with UBSAN and I don't see
how the value would even be uninitialzed.
2024-09-22 17:15:07 +03:00
Bananymous
60d5257678
Kenrel: Add __builtin_unreachable support for UBSAN
2024-09-22 17:14:36 +03:00
Bananymous
d59463d11b
Kernel: Fix TTY reading one keyevent after disabling input handling
2024-09-22 17:13:10 +03:00
Bananymous
23d6205659
Kernel: Move DEBUG_* macros to centralized Debug.h
...
This makes toggling debug info much easier
2024-09-20 11:00:07 +03:00
Bananymous
bc0acc6f44
Kernel: Validate network packet sizes before casting
...
This caused a lot of crashes on invalid packets :D
2024-09-20 10:46:59 +03:00
Bananymous
b8622f2b4b
Kernel: Implement simple RTL8169 driver
...
This allows me to use internet when running banan-os on my hardware!
2024-09-19 22:58:03 +03:00
Bananymous
7f0c39fe91
Kernel: Don't crash the kernel if packet is smaller than ethernet hdr
2024-09-19 22:51:55 +03:00
Bananymous
a489be0e05
Kernel: Allow parallel LAPIC timer initialization with HPET
...
HPET supports reading LAPIC counter without locks, so it can be done in
parallel. This makes booting much faster. Previously initializing every
timer took 100 ms, so 16 CPUs took total of 1.6 seconds. This allows
doing it all in 100 ms.
2024-09-19 14:41:59 +03:00
Bananymous
8e08046519
Kernel: Add asserts about having locked TTY's write lock
...
This for some reason fixes booting on real hardware? :D
2024-09-18 00:56:48 +03:00
Bananymous
999eb53364
Kernel: Release debug lock if its locked during kernel panic
...
Also kernel panic now prints if it had lock
2024-09-18 00:56:02 +03:00
Bananymous
0620ed3d4f
Kernel: Fix file open permissions for some syscalls
2024-09-17 19:11:48 +03:00
Bananymous
b779b3cf2d
Kernel: Move file finding code to a helper
2024-09-17 18:52:52 +03:00
Bananymous
e431e90b20
Kernel/LibC: Implement all chown family function with fchownat
2024-09-17 18:35:01 +03:00
Bananymous
4aa466b948
Kernel/LibC: Implement all chmod family functions using fchmodat
2024-09-17 17:19:26 +03:00
Bananymous
3666525d24
Kernel/LibC: Implement `readlink` in terms of `readlinkat`
2024-09-17 16:38:15 +03:00
Bananymous
f1a4bbce53
Kernel/LibC: Implement all stat family functions with fstatat
...
This patch gets rid of 2 unnecessary syscalls!
2024-09-17 16:38:01 +03:00
Bananymous
708a720d9d
Kernel: Remove SYS_OPEN
...
This can be done with SYS_OPENAT with fd set to AT_FDCWD
2024-09-17 16:16:47 +03:00
Bananymous
5e4aa75e03
Kernel: Perform access checks when creating a file or a directory
...
Also SYS_CREATE_DIR now uses correct relative path. It used to always
create files relative to root. And as no permission checks were tested,
file creation succeeded to root as long as path did not contain '/' :D
2024-09-17 15:57:07 +03:00
Bananymous
d88ee5c9ee
Kernel/LibC: Implement `creat` with `open`
...
This allows getting rid of unnecessary SYS_CREATE. Directory creation
still has its own syscall, but I could combine it with SYS_OPEN also.
2024-09-17 15:55:53 +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
a084f83f4c
Kernel: Rework kernel-side ELF loading
...
ELFs are now loaded as MemoryRegions so they don't need special handling
anywhere. This also allows file backed COW optimizations to work. This
was not the case before.
This patch removes now obsolete LoadableELF and unused ELF files from
LibElf.
2024-09-15 23:57:34 +03:00
Bananymous
54732edff4
Kernel: Fix bugs in memory regions
...
MemoryRegion::initialize() required size to be page aligned, this is not
necessary.
MemoryBackedRegion::copy_data_to_region() required user-write
permissions for underlying data. This did not matter as memory backed
regions dont support COW memory, but it could lead to bugs later on.
2024-09-15 23:18:05 +03:00
Bananymous
7feb4c4ebd
Kernel: VFS::file_from_absolute_path now used root_file() API
2024-09-15 02:38:25 +03:00
Bananymous
2911d1f018
Kernel: Cleanup and fix pseudo terminals
2024-09-15 02:38:07 +03:00
Bananymous
d68ad893f0
Kernel/Shell: Add support for delete key
2024-09-14 22:45:48 +03:00
Bananymous
39667de662
Kernel: Fix sizeof check for sys_tc{set,get}attr
2024-09-14 21:17:03 +03:00
Bananymous
8956835d95
Kernel: Make sys_.*at use VFS relative path finding
2024-09-14 21:15:58 +03:00
Bananymous
ea4ec2eafc
Kernel: Make OpenFileDescrptor store VFS::File instead of inode+path
2024-09-14 20:10:21 +03:00
Bananymous
3a352078de
Kernel: Make VirtualFileSystem::File non copyable
2024-09-14 20:09:28 +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
b41738b47b
Kernel: Fix ACPI name formatting functions
2024-09-14 19:39:13 +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
c77ad5fb34
Kernel: Implement copy-on-write memory for file backed `mmap`s
2024-09-11 19:33:50 +03:00
Bananymous
64a3893f6f
Kernel: Add command line option to disable AML parsing
...
This can be handy if my broken AML parser crashes or hangs while parsing
AML :D
2024-09-10 16:20:24 +03:00
Bananymous
eabe759ebf
Kernel: Don't require APs that are not started to start :D
2024-09-10 16:19:43 +03:00
Bananymous
a4838386e6
Kernel: Remove unnecessary branch from uncanonicalizing addresses
2024-09-10 16:19:16 +03:00
Bananymous
c65613901f
Kernel: Fix AML aliases and package elements
2024-09-10 16:18:42 +03:00
Bananymous
de35cec2e1
Kernel: Allow private file mappings past file end
...
This is just to make memory mapping ELF files easier :D
2024-09-05 14:48:42 +03:00
Bananymous
2f241e1b61
Kernel: Implement FileBackedRegion::clone
2024-09-05 13:59:09 +03:00
Bananymous
f30947336a
BuildSystem: Cleanup cmake files
2024-09-05 12:52:25 +03:00
Bananymous
1138ec77ca
Kernel: Fix MemoryBackedRegion cloning for non page aligned size
2024-09-04 21:14:26 +03:00
Bananymous
ddf1babfe1
Kernel: Cleanup constructor calls
2024-08-31 02:23:08 +03:00
Bananymous
ef5af384e7
Kernel: Print userspace invalid pointer access address
2024-08-30 15:34:37 +03:00
Bananymous
a134d16070
Kernel: Fix MemoryRegion test for contains_fully
2024-08-30 15:33:58 +03:00