Bananymous
89ca4c8a8b
Kernel: Implement IPI broadcasting
2024-03-09 23:53:38 +02:00
Bananymous
2323a55517
Kernel: Debug lock is locked while dumping stack trace
2024-03-09 23:52:06 +02:00
Bananymous
45d6caa1d0
Kernel: APs now start their idle threads when scheduler is started
2024-03-09 23:51:40 +02:00
Bananymous
55d2a64f54
Kernel: Map interrupt handlers for all processors
...
This doesn't mean that processors will actually handle the irqs
2024-03-09 23:50:57 +02:00
Bananymous
2420886c2c
Kernel: Move current and idle thread to Processor
2024-03-08 23:39:29 +02:00
Bananymous
e636dce919
Kernel: Rewrite scheduler thread lists
...
Scheduler now has its own data SchedulerQueue which holds active nad
blocking thread lists. This removes need for BAN/Errors.h and making
current thread separate element instead of iterator into linked list.
This makes it possible to have current_thread on each processor
instead of a global one in Scheduler.
2024-03-08 22:13:45 +02:00
Bananymous
1a1f9b1cf2
Kernel: Fix {read,write}_gs_sized input operands to work always
2024-03-08 22:12:33 +02:00
Bananymous
54d0cb47cd
BAN: Update ASSERT_NOT_REACHED message
2024-03-08 22:11:39 +02:00
Bananymous
23a2f8b903
Kernel: Cleanup multiprocessor startup by removing magic numbers
2024-03-07 17:01:17 +02:00
Bananymous
29fd682672
Kernel: Store current processor pointer in IA32_GS_BASE
...
This allows easier access to processors fields
2024-03-07 16:05:29 +02:00
Bananymous
efed67cbd0
BAN: Remove unnecessary default constructor from Array
2024-03-06 16:01:52 +02:00
Bananymous
6234a5bc0b
Kernel: Move multiprocessor initialize after framebuffer is created
...
This allows getting output before multiprocessor is started.
2024-03-06 16:00:19 +02:00
Bananymous
54f64e7618
Kernel: Move current page table to Processor
...
APs can now map kernel page table and print current time!
2024-03-06 02:19:59 +02:00
Bananymous
f0105cb7fb
Kernel: Move Interruptable from InterruptController.h to its own file
2024-03-06 00:47:02 +02:00
Bananymous
76b0f80169
Kernel: Move IDT to Processor
2024-03-06 00:45:54 +02:00
Bananymous
f84df175ce
Kernel: Save BSB id
2024-03-06 00:36:09 +02:00
Bananymous
58aca68726
Kernel: Move GDT to Processor
2024-03-06 00:35:45 +02:00
Bananymous
8670364f44
BAN: Remove unnecessary include from Array.h
2024-03-06 00:01:06 +02:00
Bananymous
418bc54f2b
Kernel: Move SpinLock definition to header and fix Scheduler locking
...
This patch allows inlining of spinlocks :)
2024-03-04 22:36:41 +02:00
Bananymous
9c36d7c338
BAN/Kernel: Rework assertion/panic system
...
BAN/Assert.h does not need any includes meaning it can be included
anywhere without problems.
2024-03-04 11:41:54 +02:00
Bananymous
8141b9977d
Kernel: Per processor information is now stored in class Processor
...
This allows us to allocate processor stacks, and other per processor
structures dynamically in runtime. Giving processor stack to
ap_trampoline feels super hacky, but it works for now.
2024-03-03 22:30:06 +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
1de9daa40f
Kernel: Move interrupt status stuff to Processor.h
...
SpinLocks are now locked with processor id instead of thread id. This
allows having multiple processors running while scheduler is not yet
activated.
2024-03-03 01:47:22 +02:00
Bananymous
efd8203232
BAN: Atomic memory order can be set per function call
2024-03-03 01:41:46 +02:00
Bananymous
a667d88f93
Kernel: Remove now obsolete CriticalScope
...
All critical scopes in kernel are now replaced by SpinLocks. This
allows proper locking in actual multiprocessing with multiple cores.
2024-03-01 15:51:02 +02:00
Bananymous
8d7dd577ab
Kernel: Replace last CriticalScopes in kernel with SpinLocks
2024-03-01 15:49:39 +02:00
Bananymous
054b41383f
Kernel: Implement SpinLock unsafe that does not keep track of locker
...
This will be used in scheduler where thread ids are changing
2024-03-01 15:48:08 +02:00
Bananymous
02ad199138
Kernel: Move interrupt status functions to kernel/Interrupts.h
2024-03-01 02:13:28 +02:00
Bananymous
65c4f9db5b
Kernel: Replace CriticalScopes with SpinLocks in Process/Thread
2024-03-01 02:13:28 +02:00
Bananymous
51e38b7614
Kernel: Replace CriticalScope with SpinLock in SerialTTY
2024-02-29 19:17:28 +02:00
Bananymous
90878a7c2b
Kernel: Replace CriticalScopes with SpinLocks in networking code
2024-02-29 19:17:28 +02:00
Bananymous
7f028f70d5
Kernel: Replace CriticalScopes with SpinLock in PS/2 and input code
2024-02-29 19:17:28 +02:00
Bananymous
ec0cb5fd54
Kernel: Remove CriticalScopes from memory handing code
2024-02-29 19:16:41 +02:00
Bananymous
682de62c57
Kernel: Replace HPET CriticalScope with SpinLock
2024-02-29 19:15:33 +02:00
Bananymous
18253b6966
Kernel: Replace InterruptController CriticalScopes with SpinLock
2024-02-29 19:15:33 +02:00
Bananymous
21f05eb118
Merge branch 'main' into locking
2024-02-28 23:00:02 +02:00
Bananymous
d94f6388b7
Kernel: Fix all broken locks from new mutexes
2024-02-28 22:45:34 +02:00
Bananymous
1971813336
BAN: Add HashMap::remove(iterator)
2024-02-28 22:35:42 +02:00
Bananymous
3c88d2aad3
BAN: Implement find() for HashMap
2024-02-28 13:20:24 +02:00
Bananymous
5c39903323
Kernel: Simplify writing to threads stacks
...
This can be done more simply as all stacks are now page aligned
2024-02-28 13:20:17 +02:00
Bananymous
6d59a2b45d
Kernel: Remove VirtualRanges created in kmalloc memory
...
These were only used as stacks of kernel threads, but they can just
as well be allocated as full pages from Heap
2024-02-28 13:19:18 +02:00
Bananymous
09c24088a2
Kernel: Cleanup kmalloc VirtualRange creation
2024-02-28 13:19:18 +02:00
Bananymous
efdc4817bb
Kernel: Print to debug log ICMP unreachable messages
...
These messages should be forwarded to underlying sockets
2024-02-28 13:19:18 +02:00
Bananymous
0c97abb053
BAN: Implement find() for HashMap
2024-02-27 15:40:30 +02:00
Bananymous
1759d247d9
Kernel: Simplify writing to threads stacks
...
This can be done more simply as all stacks are now page aligned
2024-02-25 21:57:33 +02:00
Bananymous
21dc64dc21
Kernel: Remove VirtualRanges created in kmalloc memory
...
These were only used as stacks of kernel threads, but they can just
as well be allocated as full pages from Heap
2024-02-25 21:56:37 +02:00
Bananymous
264eff3ad0
Kernel: Cleanup kmalloc VirtualRange creation
2024-02-25 21:33:30 +02:00
Bananymous
05c7b21b0a
Kernel: Print to debug log ICMP unreachable messages
...
These messages should be forwarded to underlying sockets
2024-02-25 21:32:37 +02:00
Bananymous
40b626b0aa
Kernel: Rewrite all kernel mutexes
...
Now SpinLock is actually just a spin lock and I added a Mutex that
does the same as the old "SpinLock". This is in preparation for
starting to support smp and making the kernel smp safe. This commit
also removes obsolete PageTableScope and CriticalScope which should
now be used by alternative APIs.
2024-02-25 21:29:43 +02:00
Bananymous
6ebfe05fce
BAN: Add parenthesis in ASSERT macros
2024-02-25 21:22:47 +02:00