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
7177da7d62
LibC: Implement dummy get_rusage
...
One port seems to use this function. This dummy just reports no used CPU
time for current process nor children
2024-09-17 15:59:22 +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
1a24d1839f
LibInput: KeyEvent to ansi string now handles delete key
...
This allows Terminal emulator to also handle delete key.
The value of `\0x7F` may be wrong as qemu's serial console seems to be
sending `\e[3~`
2024-09-15 03:13:21 +03:00
Bananymous
c3040a04a3
Terminal: Optimize printing a lot
...
Terminal used to run `yes` at around 400 lines per second
This patch pumps that to over 100'000 lines per second!
There are 2 optimizations done:
1. only invalidate window once after rendering is done
2. if printing more than `rows()` newlines skip prior data
2024-09-15 03:12:26 +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
4ca147699d
Shell: use printf and putchar instead of fprintf and fputc
2024-09-14 22:37:09 +03:00
Bananymous
abed41b8fa
Shell: Remove builtin tests
...
Test should be programs in /bin instead
2024-09-14 22:28:33 +03:00
Bananymous
2604a55f80
Shell: Make ctrl+c start a new command
2024-09-14 22:27:32 +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
dce2436b2c
BAN: Implement Vector::reverse()
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
7f25ddc229
userspace: Add missing alpha channels
2024-09-12 20:53:45 +03:00
Bananymous
163961df4f
ports/doom: Add alpha channel for framebuffer access
2024-09-12 20:16:17 +03:00
Bananymous
97da386ed6
WindowServer: Make focused window bounce by pressing F2
...
This was an awesome idea by [@Dcraftbg](https://github.com/Dcraftbg )
2024-09-12 20:09:23 +03:00
Bananymous
c706829a91
WindowServer: Make corner-radius a variable in config file!
2024-09-12 20:07:30 +03:00
Bananymous
6cd246a38e
WindowServer: Add support for rounded corners and transparency
2024-09-12 19:35:44 +03:00
Bananymous
43e88c0ae0
Terminal: Add alpha channel to colors
...
This doesn't do anything yet, but will when I add transparency support
for WindowServer
2024-09-12 19:34:25 +03:00
Bananymous
bf01b935bd
WindowServer: Start Terminal with Super+Enter
...
this allows doing something in GUI after Terminal is closed
also WindowServer is now stopped with Super+Shift+E
2024-09-11 22:18:08 +03:00
Bananymous
98c011e6a6
WindowServer: Open all fds as CLOEXEC
...
This will allow forking the window server cleanly :D
2024-09-11 22:17:31 +03:00
Bananymous
86dcb5c471
init: Don't leak pwent fd to child processes
2024-09-11 22:11:05 +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
4006a04817
DynamicLoader: Don't do file backed mapping over file bounds
2024-09-11 19:30:35 +03:00
Bananymous
4189a1c729
LibC: Make _init and _fini weak symbols
...
These seem to be missing sometimes when making shared executables
2024-09-11 14:39:07 +03:00
Bananymous
a07cbabcb3
LibC: Define function sizes for setjmp and longjmp
...
dynamic linking was complaining about these not existing
2024-09-10 16:21:20 +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
19d16620a6
DynamicLoader: Don't do file backed mapping for filesz == 0
2024-09-05 14:50:05 +03:00
Bananymous
4e15b9cdfa
Ports: Add explicit -libgcc-shared for ports on 32 bit
2024-09-05 14:49:23 +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
e8bcebfb8e
DynamicLoader: Use file backed mmap when possible
2024-09-05 13:59:39 +03:00
Bananymous
2f241e1b61
Kernel: Implement FileBackedRegion::clone
2024-09-05 13:59:09 +03:00