Bananymous
9781cc5d16
Kernel: Remove obsolete Scheduler::is_valid_tid()
...
This function was used when processes could die at any point in time.
Now that processes can only die in known spots, we can be sure they
are not holding any locks. This allows much more performant locking.
2023-12-07 13:26:42 +02:00
Bananymous
6ed6fb6f78
Kernel: Make Inodes use the new lock
...
Also remove old lock from TTY since it can just use the one Inode
already has.
2023-12-07 13:19:12 +02:00
Bananymous
39170a437e
Kernel: Implement RecursivePrioritySpinLock
...
This locks won't allow locking from userspace thread if there is
kernel thread waiting to lock this.
2023-12-07 13:18:21 +02:00
Bananymous
0389fbe88d
Kernel: Appreciate setuid and setgid bits executables
2023-12-06 18:14:27 +02:00
Bananymous
91ee80ea86
Kernel: Make sys_nanosleep interruptable by signals
2023-12-06 16:22:24 +02:00
Bananymous
5b8adb8418
Kernel: Cleanup sys_sleep() and TTY::read_impl
2023-12-06 16:21:22 +02:00
Bananymous
fee9ee0f16
Kernel: Add API to block on semaphore until unblock or EINTR
2023-12-06 16:13:07 +02:00
Bananymous
4a5b38ca07
Kernel: Scheduler::unblock_thread() wakes sleeping threads
2023-12-06 16:12:37 +02:00
Bananymous
d48839cf75
Kernel: Make sleep syscall interruptable
2023-12-06 13:13:37 +02:00
Bananymous
b334904427
Kernel: Rework all signal code
...
Signal handling code was way too complex. Now everything is
simplified and there is no need for ThreadBlockers.
Only complication that this patch includes is that blocking syscalls
have to manually be made interruptable by signal. There might be some
clever solution to combat this is make this happen automatically.
2023-12-06 13:02:17 +02:00
Bananymous
afa1f07fd2
Kernel: Remove unnecessary raise syscall
2023-12-06 13:00:45 +02:00
Bananymous
bb831bcdaa
Kernel: Add helper for checking whether segment is from userspace
2023-12-06 12:57:13 +02:00
Bananymous
f1c2284512
Kernel: Fix keyboard layout for underscore
2023-12-01 12:31:16 +02:00
Bananymous
1cfab4ae04
BuildSystem/Kernel: Enable -Wextra and -Werror in kernel
...
Only needed to fix some unused variable bugs
2023-12-01 01:22:53 +02:00
Bananymous
2ac28cba6e
BuildSystem: Don't build lai with -Wstack-usage
...
Lai has two functions that trigger warnings on gcc. There isn't
really anything I can do about it, so just disable the warning
2023-12-01 01:22:53 +02:00
Bananymous
ebe465e81e
Kernel: cast between inheritance with static_cast
...
using reinterpret_cast is not a good idea. preferably we would use
dynamic_cast, but that is not possible since kernel is compiled with
-fno-rtti.
2023-11-29 20:50:57 +02:00
Bananymous
c10dffd719
Kernel: Make internal framebuffer bpp constexpr defined in libc
2023-11-29 20:07:33 +02:00
Bananymous
45d8d76e87
Kernel: Use the correct bpp when writing to framebuffer
2023-11-29 00:31:24 +02:00
Bananymous
58be87ba3c
Kernel: Implement mmaping for framebuffer device
2023-11-28 23:51:56 +02:00
Bananymous
6d7e61225b
Kernel: Add framebuffer device to devfs
2023-11-28 23:51:28 +02:00
Bananymous
eb69fc477b
Kernel: Add API for implementing mmappable devices
2023-11-28 23:50:49 +02:00
Bananymous
74b3fc2e7c
Kernel: Reading from negative offset in fb dev gives out info
2023-11-28 23:50:11 +02:00
Bananymous
4a0bfd08e0
Kernel/LibC: Implement pread()
2023-11-28 23:47:30 +02:00
Bananymous
46ad4f2818
Kernel/LibC: Implement very basic msync
2023-11-22 22:44:06 +02:00
Bananymous
0adb28e23f
Kernel: Delete the now obsolete VesaTerminalDriver
2023-11-22 21:59:11 +02:00
Bananymous
d4aa33b18b
Kernel: Implement TerminalDriver for Framebuffer device
...
Use this new FramebufferTerminalDriver for terminal instead of the
old VesaTerminalDriver. Only drawback with this is that framebuffer
device can only be intialized after DevFS is initialized.
2023-11-22 21:57:17 +02:00
Bananymous
4ba3a17af3
Kernel: Add more APIs to FramebufferDevice
2023-11-22 21:56:27 +02:00
Bananymous
e9d762892c
Kernel: Implement basic framebuffer device
...
This allows exposing framebuffer to userspace
2023-11-22 20:34:41 +02:00
Bananymous
52807366bf
Kernel: Make Ext2 filesystem use BlockDevice instead of Partition
2023-11-21 15:20:24 +02:00
Bananymous
b437d4eb41
Kernel: TmpFS doesn't mark any functions as final
...
I didn't think these would be overloaded, but they are
2023-11-21 15:19:34 +02:00
Bananymous
8b7f3f1fb2
Kernel: Add common {read,write}_blocks() api to BlockDevice
2023-11-21 15:19:07 +02:00
Bananymous
c607f5385e
Kernel: Move Partition to its own file
2023-11-21 15:16:04 +02:00
Bananymous
5293ae070d
Kernel: ProcFS inodes reflect processes ruid/rgid
...
setgid/setuid did not change the permissions of procfs inodes. This
made Shell launched by init not appear in meminfo.
2023-11-18 14:26:44 +02:00
Bananymous
a312d75bb2
Bootloader: Implement VESA video mode query and pass it to kernel
...
Kernel now gets framebuffer from bootloader. Framebuffer dimensions
and bpp are hardcoded in bootloader, but will probably be read from
config file at some point.
2023-11-17 22:45:35 +02:00
Bananymous
065eec430e
Kernel/Bootloader: banan-os can now be booted with my bootloader :D
2023-11-17 20:33:02 +02:00
Bananymous
41065d2f9a
Kernel: Don't calculate divisor in a for loop in ext2 inodes
2023-11-17 19:02:01 +02:00
Bananymous
3daf3d53a3
Kernel: Serial now uses random size for some serial ports
...
If the serial port doesn't repond with a size, just use a random
one. There is no reason to ditch the whole output if you cannot
determine its size.
2023-11-17 18:56:02 +02:00
Bananymous
ec56e9c6f1
Kernel: Don't use multiboot2 explicitly. Parse it to common structure
...
This allows support of multiple different bootloaders
2023-11-17 18:54:59 +02:00
Bananymous
447da99f0b
Kernel/LibC: Implement readlink and readlinkat
2023-11-11 23:16:52 +02:00
Bananymous
2191ca46bb
Kernel: Make TmpFS enforce max page count.
2023-11-07 16:13:21 +02:00
Bananymous
cec04a2858
Kernel: Remove now obsolete RamFS
...
Everything is using now the better TmpFS which uses physical pages
for page allocation instead of the static kmalloc memory.
2023-11-07 16:07:11 +02:00
Bananymous
b87351f6d5
Kernel: Make DevFS use the new and better TmpFS instead of RamFS
2023-11-07 16:05:05 +02:00
Bananymous
464737fbe9
Kernel: Add method to TmpFS for looping over all (cached) inodes
2023-11-07 16:04:34 +02:00
Bananymous
8b4f661acb
Kernel: Lock TmpFS in all its methods
2023-11-07 16:03:52 +02:00
Bananymous
27963febc0
Kernel: Implement symlinks to TmpFS
2023-11-07 15:59:50 +02:00
Bananymous
6d4b684219
Kernel: Make PS/2 keyboard wait until interrupts are enabled
2023-11-07 15:58:50 +02:00
Bananymous
1acc0abf2e
Kernel: Make unlinking from /proc always fail with EPERM
2023-11-07 02:40:27 +02:00
Bananymous
c20f773c5d
Kernel: /tmp is now TmpFS instead of RamFS
2023-11-07 02:36:22 +02:00
Bananymous
a46b2f43d9
Kernel: Make ProcFS use the new TmpFS internally
2023-11-07 02:35:44 +02:00
Bananymous
a20f8607de
Kernel: Implement TmpFS Inode unlinking and deletion
2023-11-06 21:49:12 +02:00