Commit Graph

19 Commits

Author SHA1 Message Date
Bananymous f49689caac Kernel: Implement API for sending IPIs for only one processor
Also move the spin wait to check for pending IPI sends to the start of
ipi sending function. There is no need to wait for IPI send succeeding
right after it. It is enough to make sure there are not multiple IPIs
being sent at the same time.
2024-07-21 17:30:59 +03:00
Bananymous cdbdc1a822 Kernel: Remove lai as a dependecy
I don't think lai is needed anymore, since my own AML interpreter
can do ACPI poweroff which was all that lai was used for.
2024-04-10 04:39:48 +03:00
Bananymous 1943c3e7a1 Kernel: Unify IDT and GDT code between x86_64 and x86_32
The code is pretty much the same, so there are just couple macros
differiating initialization.
2024-03-26 16:42:02 +02:00
Bananymous 89ca4c8a8b Kernel: Implement IPI broadcasting 2024-03-09 23:53:38 +02:00
Bananymous f0105cb7fb Kernel: Move Interruptable from InterruptController.h to its own file 2024-03-06 00:47:02 +02:00
Bananymous c035d3c82c Kernel: Start all processors on kernel boot
Processors don't do anything, except print hello message and halt.
2024-03-03 02:19:43 +02:00
Bananymous 02ad199138 Kernel: Move interrupt status functions to kernel/Interrupts.h 2024-03-01 02:13:28 +02:00
Bananymous d94f6388b7 Kernel: Fix all broken locks from new mutexes 2024-02-28 22:45:34 +02:00
Bananymous dfe5a2d665 All: Cleanup all files
Add newline to end of files and remove whitespace from end of lines
2024-01-24 15:53:38 +02:00
Bananymous c6130f33d7 Kernel: Implement MSI, MSI-X and interrupt reservation 2024-01-13 18:21:21 +02:00
Bananymous 63f64619bc Kernel: add NEVER_INLINE and make Interruptable not constructable 2023-10-13 16:17:27 +03:00
Bananymous 89c975350d Kernel: PCI can now get interrupts for devices 2023-10-11 22:18:58 +03:00
Bananymous 27eb5af6f0 Kernel: Rework interrupt mechanism
All interruptrable classes now inherit from Interruptable which
has methdo handle_irq which is called on a interrupt.
2023-10-05 18:53:45 +03:00
Bananymous d45bf363f1 Kernel: Enter ACPI mode with lai 2023-09-28 12:30:27 +03:00
Bananymous d90aba0963 Kernel: Create CriticalScope and fix kmalloc
This disables interrupts for the current scope and restores them
after the scope. This is used in kmalloc, since scheduler might
call into kmalloc/kfree, but deadlock if some thread is currently
trying to allocate. This allows us to use kmalloc in Scheduler.
2023-03-08 13:55:53 +02:00
Bananymous f7ebda3bf1 Kernel: Move interrupt related functions to InterruptController 2023-03-08 03:16:51 +02:00
Bananymous 9b8de5025a All: rename every function from UpperCamelCase to snake_case
This was a mess since I didn't know which to use but now I decided
to go with snake_case :)
2023-02-01 21:05:44 +02:00
Bananymous 6dc22b7251 Kernel: Add actual register values to x86_64 kernel panic
Very hackish implementation, but we now get actual registers at the
time of the interrupt happening
2023-01-30 18:52:38 +02:00
Bananymous ba53582f23 Kernel: Rewrite APIC and PIC more OOP friendly
x86_64 port is slowly coming together
2023-01-23 20:13:57 +02:00