Bananymous
951eac6bfa
Kernel: Implement hacky non-block read for ps2 keyboard
2023-12-19 00:20:46 +02:00
Bananymous
0833d7b43f
Kernel: Allow opening files with O_NONBLOCK
2023-12-19 00:20:15 +02:00
Bananymous
e227a87140
Kernel: Allow creating directories if path ends with '/'
...
Also create and create_dir will now fail with EEXISTS if file exists
2023-12-14 10:56:53 +02:00
Bananymous
6cd5763361
Kernel: Allow cloning of mmapped framebuffer regions
2023-12-14 10:54:06 +02:00
Bananymous
0f1c740fe8
Kernel: Implement two missing ubsan handlers needed by lai
2023-12-14 10:53:36 +02:00
Bananymous
2f8759d2d3
Kernel: Make ext2 fs work with block sizes != 1024
2023-12-10 01:32:30 +02:00
Bananymous
284a012509
Kernel: Add framebuffer information to kernel image
2023-12-09 17:33:58 +02:00
Bananymous
2e858fddb5
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
12474addda
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
7c25e4ce5a
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
24b71d1170
Kernel: Appreciate setuid and setgid bits executables
2023-12-06 18:14:27 +02:00
Bananymous
393ac33e3c
Kernel: Make sys_nanosleep interruptable by signals
2023-12-06 16:22:24 +02:00
Bananymous
deeb6d2756
Kernel: Cleanup sys_sleep() and TTY::read_impl
2023-12-06 16:21:22 +02:00
Bananymous
1ac831d4b1
Kernel: Add API to block on semaphore until unblock or EINTR
2023-12-06 16:13:07 +02:00
Bananymous
534969df32
Kernel: Scheduler::unblock_thread() wakes sleeping threads
2023-12-06 16:12:37 +02:00
Bananymous
a12ffaa8a2
Kernel: Make sleep syscall interruptable
2023-12-06 13:13:37 +02:00
Bananymous
1c78671078
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
cdcc36efde
Kernel: Remove unnecessary raise syscall
2023-12-06 13:00:45 +02:00
Bananymous
336daa2cc5
Kernel: Add helper for checking whether segment is from userspace
2023-12-06 12:57:13 +02:00
Bananymous
c140dd2a65
Kernel: Fix keyboard layout for underscore
2023-12-01 12:31:16 +02:00
Bananymous
9b841cb823
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
c1cac43f28
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
fdb6dc94ba
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
327b330338
Kernel: Make internal framebuffer bpp constexpr defined in libc
2023-11-29 20:07:33 +02:00
Bananymous
d7a3aca5d4
Kernel: Use the correct bpp when writing to framebuffer
2023-11-29 00:31:24 +02:00
Bananymous
cc572af390
Kernel: Implement mmaping for framebuffer device
2023-11-28 23:51:56 +02:00
Bananymous
4275d2ce48
Kernel: Add framebuffer device to devfs
2023-11-28 23:51:28 +02:00
Bananymous
4a87d6052b
Kernel: Add API for implementing mmappable devices
2023-11-28 23:50:49 +02:00
Bananymous
d86ecf4f61
Kernel: Reading from negative offset in fb dev gives out info
2023-11-28 23:50:11 +02:00
Bananymous
09b7cb2f33
Kernel/LibC: Implement pread()
2023-11-28 23:47:30 +02:00
Bananymous
60e755210c
Kernel/LibC: Implement very basic msync
2023-11-22 22:44:06 +02:00
Bananymous
ab9954fe73
Kernel: Delete the now obsolete VesaTerminalDriver
2023-11-22 21:59:11 +02:00
Bananymous
fd18071975
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
b88a7e0c6b
Kernel: Add more APIs to FramebufferDevice
2023-11-22 21:56:27 +02:00
Bananymous
cdf53f33f6
Kernel: Implement basic framebuffer device
...
This allows exposing framebuffer to userspace
2023-11-22 20:34:41 +02:00
Bananymous
bc5e8add19
Kernel: Make Ext2 filesystem use BlockDevice instead of Partition
2023-11-21 15:20:24 +02:00
Bananymous
7a8fd6d04a
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
b749963b62
Kernel: Add common {read,write}_blocks() api to BlockDevice
2023-11-21 15:19:07 +02:00
Bananymous
6a068fb9f9
Kernel: Move Partition to its own file
2023-11-21 15:16:04 +02:00
Bananymous
cadb56d8ba
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
c9e9cfd361
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
cb5a5d3ed1
Kernel/Bootloader: banan-os can now be booted with my bootloader :D
2023-11-17 20:33:02 +02:00
Bananymous
95af728e39
Kernel: Don't calculate divisor in a for loop in ext2 inodes
2023-11-17 19:02:01 +02:00
Bananymous
24d87acec4
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
84040e64b8
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
c084ce8b01
Kernel/LibC: Implement readlink and readlinkat
2023-11-11 23:16:52 +02:00
Bananymous
fda0dfec30
Kernel: Make TmpFS enforce max page count.
2023-11-07 16:13:21 +02:00
Bananymous
d6ae1bcf36
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
5044810451
Kernel: Make DevFS use the new and better TmpFS instead of RamFS
2023-11-07 16:05:05 +02:00
Bananymous
147cd93ed3
Kernel: Add method to TmpFS for looping over all (cached) inodes
2023-11-07 16:04:34 +02:00