Commit Graph

840 Commits

Author SHA1 Message Date
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