Commit Graph

1336 Commits

Author SHA1 Message Date
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
Bananymous 827eec6af0 Kernel: Make .rodata read-only and add -orphan-handling=error
I don't really know why .rodata was marked writable :D
2024-08-30 15:33:02 +03:00
Bananymous 8da2f12ba6 Kernel: Only load program headers of interpreter if its present
I was loading program headers of both executable and interpreter but
that is incorrect. The interpreter will itself load the program headers
of the executable.
2024-08-28 21:19:37 +03:00
Bananymous 2bf65ef512 Kernel: Invoke ELF interpreter instead if it is specified 2024-08-28 17:06:32 +03:00
Bananymous d20752c318 Kernel: Make OpenFileDescritorSet::open take rvalue
This gets rid of some implicit allocations from copy constructors
2024-08-28 16:36:10 +03:00
Bananymous 5f66ef34dd Kernel: map userspace arguments after the entry point
This allows cleaner memory layout for processes that are not loaded to
default location
2024-08-27 22:46:08 +03:00
Bananymous da0b4cd40e Kernel: Allow MAP_FIXED in mmap 2024-08-27 22:45:49 +03:00
Bananymous 2c520391eb Kernel/LibC: Add support for init_array and fini_array 2024-08-27 00:47:03 +03:00
Bananymous 7c4b9218f2 Kernel: VirtualTTY now resets ansi state before printing anything 2024-08-25 17:56:06 +03:00
Bananymous 72f8138ca1 Kernel: Disable scheduler load balancing until I get it fixed
Scheduler keeps crashing all the time when running on multiple cores.
This patch disabled the load balancer, which seems to get rid of most
scheduler crashes.
2024-08-25 15:37:17 +03:00
Bananymous 991ae4383a Kernel/LibC: Implement fchmod 2024-08-25 15:07:42 +03:00
Bananymous 2ce7205c80 Kernel: Add command line option to disable debug printing
The whole system can crash when debug output and tty output are done at
the same time. This patch is just a hack to prevent the crash :D
2024-08-25 15:02:15 +03:00
Bananymous fb35f06cf5 Kernel: Add better support for bootloaders loading the kernel
Before I assumed that bootloaders loaded the kernel at physical address
0, but this patch kinda allows loading to different addresses. This
still doesn't fully work as kernel bootstrap paging relies on kernel
being loaded at 0
2024-08-22 14:48:21 +03:00
Bananymous abc788c756 Kernel: Improve output message when dumping all syscalls 2024-08-22 14:48:21 +03:00
Bananymous 63b616dc2e Kernel: Hack non-blocking support for sockets
This is not thread safe and can still block if two programs refering to
the same socket try to read data at the same time
2024-08-22 14:48:14 +03:00
Bananymous cba12efeb1 Kernel: Ignore optional_actions in SYS_TCSETATTR
Currently all terminals are syncronous, so the actions don't do anything
2024-08-22 14:47:54 +03:00
Bananymous 37cd4ed504 Kernel: Add support for CSI @, b, d to VirtualTerminal 2024-08-22 14:04:45 +03:00
Bananymous 869bba4dad Kernel: Add check for panic in timer interrupt handler
Previously processors would not get notified about kernel panic if they
were idling
2024-08-22 14:03:03 +03:00
Bananymous 23194d1f53 Kernel: Implement basic random device to /dev/random 2024-08-22 14:02:26 +03:00
Bananymous 969563c06a Kernel: Don't load AP init code to 0xF000, but relocate it later
This cleans up the kernel executable as bootloaders don't have to
load AP init code straight to 0xF000, but it will be moved there once
kernel is doing the AP initialization.
2024-08-21 13:37:50 +03:00
Bananymous 066e8e1cc2 Kernel: Remove unnecessary debug logging from VFS initialization 2024-08-18 20:51:10 +03:00
Bananymous 5cd7b40165 Kernel: Make BananBootloader info struct header compatible with C 2024-08-18 20:51:10 +03:00
Bananymous c7b134ba4b Kernel: Fix NVMe controller namespace numbering
namespace numbers were incrementing globally instead of per controller.
This led to two single namespace controllers creating nvme0n1 and
nvme1n2
2024-08-18 20:51:10 +03:00
Bananymous ff62c262fe Kernel: Fix PS/2 scancode set 2 keycodes for the bottom row keys 2024-08-18 20:51:10 +03:00
Bananymous 42e2c15e0c Kernel: Add ps2=<scancode set> command line argument
This allows forcing specific scancode set on broken PS/2 emulations
2024-08-18 20:51:10 +03:00
Bananymous 40c6989374 Kernel: Implement AML ObjectTypeOp 2024-08-18 20:51:10 +03:00
Bananymous 71dc373610 Kernel: "Fix" AML _OSI string to return true for windows strings
This is the way its supposed to be done as other code paths are
untested...
2024-08-18 20:51:10 +03:00
Bananymous 0fa16cf982 Kernel: Fix and add some AML to_underlying functions 2024-08-18 20:44:51 +03:00
Bananymous 8902032b42 BuildSystem: Cleanup kernel cmake file 2024-08-18 20:44:12 +03:00
Bananymous 368f5e9799 Kernel: Add command lineoption `nousb` that will disable usb controller 2024-08-16 22:09:24 +03:00
Bananymous b1fe24bb57 Kernel: Hack AML integers to work better
Something is trying to store into a constant integers. Just by copying
not returning any integers as constants fixes it xD
2024-08-16 13:04:52 +03:00
Bananymous 490a28ee7a Kernel/AML: General cleanup and compliance improvements 2024-08-15 23:14:13 +03:00
Bananymous 75884ca6b8 Kernel/AML: Allow calling method through named objects 2024-08-15 23:13:32 +03:00
Bananymous d729d7f570 Kernel: Implement AML storing to Buffer 2024-08-15 23:12:52 +03:00
Bananymous 6408bb2efa Kernel: Add AML API for getting underlying value of nodes 2024-08-15 23:11:59 +03:00
Bananymous d8dabab4fb Kernel: Implement AML CopyObjectOp 2024-08-15 20:55:55 +03:00
Bananymous 4dc107f77a Kernel: Fix AML Register/Reference accesses 2024-08-15 20:55:18 +03:00
Bananymous eaf06d239c Kernel: Cleanup and fix AML Method calls 2024-08-15 20:54:55 +03:00
Bananymous d9b3a4bf77 Kernel: Add more conversions for AML Integer, Register, String 2024-08-15 20:51:04 +03:00
Bananymous cf970d5914 Kernel: Add better conversion for AML Alias, Name and Reference 2024-08-15 20:48:35 +03:00
Bananymous 1cfe3dd4da Kernel: Implement AML BreakOp and ContinueOp 2024-08-15 19:08:00 +03:00
Bananymous 51d1e47bfe Kernel: Fix AML CreateFieldOp to take bit index instead of byte index 2024-08-15 19:05:58 +03:00
Bananymous e0a447bfaf Kernel: Add _GL to ACPI root namespace 2024-08-15 02:28:22 +03:00
Bananymous 3f5ee6f414 Kernel: Rewrite the AML conversion API
This doesn't currently make the interpreter any better, but it will make
further implementation easier to be spec (or hardware...) compliant
2024-08-15 02:25:45 +03:00
Bananymous 44d5c8c4b4 Kernel: Implement AML To{Buffer,Integer,String}Op 2024-08-14 20:28:32 +03:00
Bananymous 17b7e9e772 Kernel: Allow all named objects to fail cleanly if name exists 2024-08-14 20:28:00 +03:00
Bananymous 957df08932 Kernel: root command line option can be specified as an UUID
Format is the same as in linux
root=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

This makes it easier to boot when computer has multiple disks installed
2024-08-14 13:23:27 +03:00
Bananymous bb40069773 Kernel: Add nice debug prints for device addition/removal 2024-08-14 13:23:27 +03:00
Bananymous 37d5b60f5c Kernel: Implement AML {Event,Reset,Signal,Wait}Op 2024-08-14 11:59:34 +03:00
Bananymous feadea0e91 Kernel: Fix AML unaligned integer reads and buffer shifts over 32 2024-08-13 23:44:17 +03:00
Bananymous f71a29b6c4 Kernel: Implement AliasOp for AML interpreter 2024-08-13 22:42:37 +03:00
Bananymous ec4cfdee23 Kernel: Fix and cleanup a lot of AML code
Node now have APIs to convert them to buffer, integer and string. This
allows possibility to handle methods that need explicitly use one of the
overloads instead of integer.

This patch also adds handling of DebugOp. This is used quite heavily in
uACPIs test suite.
2024-08-13 22:42:37 +03:00
Bananymous dd79db6383 Kernel: AML implement CreateFieldOp 2024-08-13 18:52:48 +03:00
Bananymous 723e458bd7 Kernel/Terminal: Update terminal color themes and fix TTY bright/dark 2024-08-12 21:15:55 +03:00
Bananymous 39be57424c Kernel: Fix SYS_SEEK with SEEK_END
I was subtracting the offset from file end when I should have added it.
2024-08-12 19:13:27 +03:00
Bananymous f37e1c2229 Kernel: Map .rodata as read only instead of read-write 2024-08-12 14:28:52 +03:00
Bananymous 4d1b32f770 Kernel: open does not need TTY_INIT to set the controlling terminal 2024-08-11 01:02:59 +03:00
Bananymous a5a097fa4a Kernel/LibC: Add initial pseudo terminal support
This patch implements posix_openpt() and ptsname()

grantpt() and unlockpt() are left in LibC as stubs, as posix_openpt
currently does all of the needed work.
2024-08-11 01:02:59 +03:00
Bananymous ad645f31d0 Kernel/LibC: Add setsid() 2024-08-11 00:58:12 +03:00
Bananymous bac3219a01 Kernel: Fix `Pipe::can_read_impl()`
The logic was inversed, which made all select calls report incorrectly
for pipes. This made terminal emulator just freeze.
2024-08-10 18:18:25 +03:00
Bananymous 09a527fb12 Kernel: Fix scheduler thread counter
I was actually never incrementing the counter :D
2024-08-10 18:18:25 +03:00
Bananymous ed325b4a45 Kernel: Fix typo in userspace address validation 2024-08-09 16:52:57 +03:00
Bananymous 1c67b5e812 Kernel: Fix wait syscall to report status of exited children 2024-08-09 16:52:35 +03:00
Bananymous b6c964c444 Kernel: Rewrite pipes
Pipes have now a fixed size buffer and pipe clone and close is working
again.
2024-08-09 16:50:19 +03:00
Bananymous 44f0ec601f Kernel: Expose /proc/meminfo and fix /proc/<pid>/meminfo
Thread was unconditionally calling <stack>->size() without validating
that the stack actually exists
2024-08-09 15:58:56 +03:00
Bananymous 2a659a9d03 BuildSystem: Fix enable sse definition
__enable_sse was never actually defined for any targets. This also adds
__arch definition for libc (so `utsname` works).
2024-08-09 15:52:42 +03:00
Bananymous 7e7c3a1bb3 Kernel: VirtualTTY now handles dark colors
I have seemingly forgot to add these before
2024-08-09 15:52:42 +03:00
Bananymous 7afdfb150f LibC: Rewrite sigprocmask in terms of pthread_sigmask
Also don't fail SYS_SIGPROCMASK if how is invalid and set is NULL.
2024-08-07 17:01:35 +03:00
Bananymous 0a7c316ffb Kernel: Fix race condition when blocking threads
If thread was blocked, but had not reached block queue, you might
already get an unblock request which would fail on an assertion.

If blocked thread was load balanced to another processor and unblocked
simultaneously, there was a race condition.
2024-08-05 20:14:13 +03:00
Bananymous e72424e01a Kernel: Implement ANSI CSI M and fix ANSI CSI L
There are not maybe not correct, but work much better than the old ones
2024-08-05 15:53:01 +03:00
Bananymous a578527012 Kernel/LibC: Implement ioctl(TIOCGWINSZ)
This allows ncurses to get the window size!
2024-08-01 22:56:26 +03:00
Bananymous af78a2d080 Kernel: Implement ANSI CSI L for TTY
vim seems to be using this, so I decided its needed
2024-08-01 22:08:46 +03:00
Bananymous 840000d02b Kernel: Make sure null signal is not send with kill() 2024-08-01 21:41:54 +03:00
Bananymous 9ea4c777ad Kernel: TTY now handles ESC key presses
This allows exiting vim :D
2024-08-01 21:41:11 +03:00
Bananymous a33b63d066 Kernel/LibC: Implement alarm() and setitimer()
This makes vim able to start!
2024-08-01 21:09:56 +03:00
Bananymous da3b30cd94 Kernel: Add macro to dump all syscalls and their return values 2024-08-01 18:21:49 +03:00
Bananymous 4599e1dec5 Kernel: Make schedler not crash when unblocking active thread
This was happening when sending signals to processes that were currently
running.
2024-08-01 18:21:49 +03:00
Bananymous 6de350ce9d Kernel/LibC: Cleanup, fix and implement a lot of signal code
This patch implements sigsets and some of their usages
2024-08-01 17:01:18 +03:00
Bananymous 838d31fa41 Kernel: Implement more POSIX compliant open() and openat() syscalls 2024-08-01 15:35:02 +03:00
Bananymous 7c3b6307d9 Kernel: Cleanup USB initialization code 2024-07-31 23:23:44 +03:00
Bananymous f0be4f86a6 LibC/Kernel: Implement access 2024-07-30 11:51:07 +03:00
Bananymous e5bb843059 LibC/Kernel: Implement ttyname 2024-07-30 11:41:18 +03:00