5d8b825659
Add a few example apps/demos in C, and make the kernel choose a random one to demonstrate every boot
2022-10-03 21:24:38 +02:00
fc9868819f
Moon 0.9-dev
2022-10-02 21:19:49 +02:00
dae2ff8d50
Add mmap and munmap syscalls, and thus, add malloc and free to libc!! (yet again, thanks to the wonderful liballoc)
2022-10-02 20:45:04 +02:00
38470724dc
Scheduler: adjust SSE saving conditions
2022-10-02 19:13:21 +02:00
1ecd24f5d6
Kernel: Add SSE support (enable SSE on boot and save context (user tasks only) on task switch)
2022-10-02 18:53:54 +02:00
8e6741ebd6
Rename SYS_version to SYS_getversion
2022-10-02 17:25:56 +02:00
c6b044acab
ELFLoader: show permissions of loadable segment
2022-10-02 17:10:24 +02:00
83d23ce8fe
Correct the syscall ABI
2022-10-02 17:01:46 +02:00
c76ecdf07c
Moon 0.8-dev
2022-10-01 17:35:10 +02:00
ac6fdce737
Add 2 new syscalls (sys_version, sys_gettid)
2022-10-01 17:30:31 +02:00
ba4806f9d3
Syscall: do not send user programs' output to the serial console
2022-10-01 15:53:55 +02:00
87cb41e549
Separate the logging stack into toggleable backends, to disable console logging once boot finishes.
2022-10-01 15:35:11 +02:00
0e46ea8ada
Finally, a text renderer that actually works. We can now see the kernel messages without a serial port :)
2022-10-01 14:27:45 +02:00
008bdf505c
Rename gfx.cpp to paint.cpp
2022-10-01 13:09:43 +02:00
30411b4b78
Fix hackiness in converting a uint32_t to a Color, by providing a function to do so
2022-10-01 13:08:47 +02:00
03db57bbf9
Sanity checks
2022-10-01 12:32:09 +02:00
66bee86a8b
Scheduler: add a load_user_task function that directly loads a file from the initrd
2022-10-01 12:28:32 +02:00
1c4383dea4
Add an apps/ folder and build-system to build userspace apps which can now be loaded from the initrd
2022-10-01 12:17:16 +02:00
9012ccc49e
Remove _userspace and move the idle task to assembly
2022-10-01 12:16:30 +02:00
6e6cf5b2b0
Add an ELF Loader!!
2022-10-01 12:15:56 +02:00
53d36be339
Add a much-needed get_blocks_from_size function
2022-10-01 12:13:38 +02:00
e769cb45a7
MemoryManager: add get_page_at and get_pages_at functions to map any physical memory at a fixed virtual address (inverse of get_mapping and get_mappings)
2022-10-01 12:12:50 +02:00
87f67b255e
Moon 0.7-dev
2022-09-29 20:09:39 +02:00
ef5994e389
Proper userspace program
2022-09-29 20:06:18 +02:00
522d74b65d
Add is_user_address and is_kernel_address functions
2022-09-29 19:30:42 +02:00
9716891eff
do not fault in the userspace demo >.<
2022-09-29 19:20:31 +02:00
f25014a8ed
refine syscalls
2022-09-29 19:17:43 +02:00
46f459337c
Interrupts: Remove ensure_handler and use a more reliable way of detecting if we are in a handler
2022-09-29 18:35:51 +02:00
6c036dfe99
Modify the userspace task
2022-09-27 19:51:01 +02:00
692221dd9e
GO FAST WHEEEEEEEEEEEEEEEE (pit tick 1 time per millisecond, so 1ms accuracy instead of 2ms like before)
2022-09-25 22:00:36 +02:00
40e8aa9ff6
Show something on the framebuffer on unsupported type, so that we can know something is going on
2022-09-25 22:00:00 +02:00
07d6fe388d
Fix naming
2022-09-25 21:43:28 +02:00
f1a7138568
User mode (with a few syscalls)
...
IT ACTUALLY WORKS NOW.
Why wasn't it working? Oh, because I was not setting already present page tables's permissions to user mode. Just a little bug. THAT I SPENT DAYS TRYING TO FIND
Anyways, it works now. Such a relief...
2022-09-25 20:35:05 +02:00
2b700f3c1d
Moon 0.6-dev
2022-09-25 18:16:49 +02:00
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