57bb1164e9
change 4 pages of stack per stack to a #define
2022-09-25 18:13:20 +02:00
d3527b8824
Use new and delete in Scheduler
2022-09-25 18:12:12 +02:00
ae9967c462
Add new and delete C++ operators
2022-09-25 18:12:03 +02:00
19dff40ee2
Scheduler: track total CPU time of tasks
2022-09-25 17:49:51 +02:00
3fd1b6773d
Panic: Only dump stack trace if InitRD is initialized
2022-09-25 17:41:34 +02:00
a078a11dde
Move PMM and VMM initialization into MemoryManager::init
2022-09-25 17:38:17 +02:00
0858db73bd
Add with_value_of and with_value to MSR
2022-09-25 17:29:33 +02:00
4e62566c48
Add with_value_of and with_value to MSR
2022-09-25 17:28:38 +02:00
aee4e55fdd
add a proper kernel panic
2022-09-25 16:56:00 +02:00
6fc7608c35
main: remove kmalloc/kfree example
2022-09-24 23:18:44 +02:00
059bf86ddf
Scheduler: use kmalloc and kfree
2022-09-24 23:18:33 +02:00
704a23d0ad
Sanity checks
2022-09-24 23:09:39 +02:00
6bd3529f32
Port liballoc to get proper kmalloc/kcalloc/krealloc/kfree functions.
...
Yes, that's not completely-from-scratch.
But let's be honest, am I going to do everything from scratch? Probably not. I'm not making my own bootloader.
And making a proper smaller-than-4-KB allocator is not something I want to do.
Plus, liballoc works perfectly in this rewrite, seeing as the MM code actually works, instead of leaking all your poor memory
And liballoc_{lock, unlock} can be actually defined, since we have spinlocks here!
2022-09-24 22:40:59 +02:00
2511b7d7a1
Add optional (compile-opt-in) debug logging to the MemoryManager (which helped catch the bug that got fixed in the previous commit)
2022-09-24 22:38:07 +02:00
a0af8fa432
QUICK BUGFIX: Shift PDE.Address to the left by 12 bits in VMM::getPhysical, to return the actual physical address
2022-09-24 22:35:19 +02:00
a2d23efd1b
Move files with their headers in include/misc/ into src/misc/
2022-09-24 21:46:09 +02:00
3891d0c52e
Rename KernelMemoryManager to MemoryManager
...
Kind of a more catchy name, isn't it?
2022-09-24 21:45:13 +02:00
57b330e907
get_symbol_name: handle case where sys/moon.sym is not present in the initial ramdisk
2022-09-24 21:38:36 +02:00
f640e3d248
symbol_strlen: stop at null terminator as well as newline
2022-09-24 21:36:29 +02:00
a9444ec5e3
Provide a default symbol for get_symbol_name
2022-09-24 21:31:03 +02:00
a0459df8d7
Remove userspace for now
2022-09-24 21:29:10 +02:00
46b7dab847
Remove RangeAllocator and make a PMM namespace
2022-09-24 21:27:45 +02:00
198f4196c4
Add an MSR utility struct
2022-09-24 20:48:27 +02:00
56ace11bb1
Copy "hello.size" bytes from hello instead of 512, who knows what there is in there...
2022-09-23 18:03:20 +02:00
7b8d30aacd
Add a Device class to PCI and a PCITypes file for string names for PCI device types
2022-09-23 18:01:07 +02:00
8a93c53277
Add a Device class to PCI
2022-09-23 17:24:45 +02:00
c3e5251687
Some more userland and font failing
2022-09-23 16:41:43 +02:00
523b252960
Moon 0.4-dev
2022-09-22 08:17:02 +02:00
11dd165a8e
Scheduler: add proper support for user tasks (still faults though)
2022-09-22 08:14:04 +02:00
543fe2885f
Add support for user pages
2022-09-22 07:57:30 +02:00
ec01dc2927
Scheduler: Change fixed Task array for (highly inefficient) memory allocation, add userspace task support (which as memory is mapped kernel-only instantly crashes), and support for exiting a task (marking it as exited and reaping it later)
2022-09-21 21:06:00 +02:00
c6c2e286e7
Prepare our GDT for userspace
2022-09-21 21:04:15 +02:00
ee49caa6d3
Interrupts: ensure is_in_handler is true if we know we are in a handler
2022-09-21 21:03:49 +02:00
4401b31440
Remove ds from context, no need for it in x86_64, use ss instead
2022-09-21 21:03:24 +02:00
1b3b93d8bb
StackTracer: add a trace_with_ip that prints the symbol name of the saved instruction pointer, for use in interrupts
2022-09-21 21:00:15 +02:00
3a69551dcc
StackTracer: only trace frames within the kernel address space
2022-09-21 20:59:41 +02:00
d54ed0dc8b
Make ASSERT, PANIC and TODO show a backtrace and scheduler tid if initialized
2022-09-21 20:56:40 +02:00
af8e5aca64
Add basic PCI driver
2022-09-21 17:57:02 +02:00
49ddb47ad4
Reorganize structure
2022-09-21 17:56:53 +02:00
e83d4c8ac9
Use a faster PIT tick rate
2022-09-21 07:29:44 +02:00
4f360693bd
Make the demo reboot when you press a key
2022-09-20 20:51:59 +02:00
29f0253e5b
Little colorful demo
2022-09-20 20:49:31 +02:00
1dce3a0cf7
Give 1 tick of CPU time to the idle task
2022-09-20 20:48:49 +02:00
5a271eaab2
Moon 0.4-dev
2022-09-20 20:05:32 +02:00
ddbe9b8b8b
Few small adjustments to the scheduler
2022-09-20 20:02:08 +02:00
1c12cf016e
Add a Scheduler.
...
Finally.
Just Round Robin with sleeping, but it's still awesome. I think this can finish v0.3, with a few adjustments.
2022-09-20 19:58:04 +02:00
e6c6a1677a
Rename "SavedContext" to "Context"
...
Seemed like a more appropriate name.
2022-09-20 19:56:43 +02:00
063b6345ee
Make reboot and shutdown disable interrupts before proceeding
...
This is getting important now that I've made a Scheduler (yay!!) *will get added next commit*
2022-09-20 19:54:49 +02:00
5ee8e17b76
Ensure we are in an interrupt in the interrupt handler
2022-09-20 17:16:23 +02:00
d0d2d4381c
Add a is_in_handler function to validate being in an interrupt handler
2022-09-20 17:16:07 +02:00