f5deb1048a
Kernel: Add functions to push and pop the interrupt state
...
This can be useful when you want to disable interrupts, but then only enable them back if they were previously enabled.
2022-10-12 12:58:56 +02:00
b3e16068ef
Kernel: Add Utilities::get_rflags(), and thus Interrupts::are_enabled()
2022-10-12 12:56:55 +02:00
e90b90c556
Kernel, libc: Round up to nearest page-aligned size instead of down
2022-10-12 12:15:12 +02:00
1e16a78106
libc: Document functions in sys/mman.h
2022-10-12 12:06:45 +02:00
96b1d1c2f2
Devices: Tell a device which name you want it to be instantiated with
...
This allows us to create a device in any path, with any filename.
2022-10-12 10:54:46 +02:00
eb03ae91e0
Devices: Add a new Serial device
...
This device permits userspace to interface with the serial port.
2022-10-12 10:44:30 +02:00
eaf7a1620b
Next version!
2022-10-11 21:42:23 +02:00
25ab31c7ce
Remove unnecessary comments
2022-10-11 21:32:28 +02:00
d3ac590e24
Kernel: Remove the sys_getversion() syscall
...
User programs can now acquire this information by reading /dev/version.
2022-10-11 21:31:28 +02:00
112e375b5e
Kernel: Add a FIXME
2022-10-11 21:21:27 +02:00
12cf37d0a7
Kernel/syscalls: Modify sys_write to accept a file descriptor and write to it
...
Previously, sys_write only wrote to the tty. Now, it uses the VFS interface, as it should.
2022-10-11 21:06:12 +02:00
e764647133
Devices: add a new ConsoleDevice
...
This new device is the userspace interface to the text console/tty.
2022-10-11 21:04:50 +02:00
b1fcfd0d74
VersionDevice: Ignore offset instead of erroring out + set flags to 0
2022-10-11 21:04:14 +02:00
e67ef7778c
VFS: Support writing to files
2022-10-11 21:03:30 +02:00
0c451e504e
Kernel: Mounting /dev MUST succeed
2022-10-11 19:53:55 +02:00
04da26bff5
kernel: add a few comments
2022-10-11 19:51:24 +02:00
0131193379
ELFLoader, Scheduler: Transition to use VFS
...
We should start to drop the old InitRD API, which only allows for files to be loaded from the initrd, and which forces pathnames to be relative (bin/init)
With VFS, we can load any kind of file from any kind of filesystem, and using paths that make sense (/bin/init)
2022-10-11 19:33:48 +02:00
86b50a6aa0
Remove random demos
...
Cool, but cumbersome in practice: have to continually restart until I get the demo I want.
So let's stick to init for now.
2022-10-11 19:25:19 +02:00
0a7d4a530d
VFS, DeviceFS: Implement a device filesystem
...
For now, we just have a version device. (this will allow us to get rid of sys_getversion!!)
More should be implemented soon.
2022-10-11 19:21:16 +02:00
a198cf8d8d
Add initrd_mkdir to registered directories in the initrd
2022-10-11 18:25:11 +02:00
4aa3da8c12
VFS: Add basic mount(), unmount() and mkdir() functions (not accessible to userspace yet)
2022-10-11 18:23:00 +02:00
1278cec065
VFS: Add a 'type' flag to Nodes, implement EISDIR
2022-10-11 17:48:11 +02:00
7a097f16ea
apps: add a new example app which does all kinds of stdio misbehaving >.<
2022-10-11 17:31:06 +02:00
667d308fc3
kernel/main.cpp: remove obsolete reference to _userspace
2022-10-11 17:30:40 +02:00
6088031c49
stdio: log stuff more
2022-10-11 17:19:03 +02:00
81815a0bdd
Refactor sys/stdio.cpp
2022-10-11 17:10:44 +02:00
2a755fcd93
sys_open(): actually return EMFILE if the process has used all of its file slots
2022-10-11 17:03:16 +02:00
1b84c443fe
Merge branch VFS into main
...
Reviewed-on: #10
2022-10-10 18:25:43 +00:00
da2ede3450
Kernel, libc, userspace: Implement file descriptors
...
Kernel: Implement a descriptor struct which stores the opened node and read offset, and give each task 8 of those.
Implement three syscalls: sys_read, sys_open and sys_close (sys_write still writes to the console instead of using a fd, for now)
Implement three new errors: ENOENT, EBADF and EMFILE.
libc: Implement the new errors, and the new syscalls in syscall().
Also fix _RETURN_WITH_ERRNO() to set errno correctly, which was making strerror() return null, thus crashing perror().
userspace: make init demonstrate the new file API.
2022-10-10 20:21:39 +02:00
63b2de4e3c
Basic FDs
2022-10-10 19:00:24 +02:00
da84f1713c
InitRD: Use get_blocks_from_size()
2022-10-10 18:45:49 +02:00
bbe7c6e658
VFS: Implement resolve_path and form the initial ramdisk's VFS properly
...
Finally, resolve_path: a function which takes a path (/etc/fstab for example), and walks the VFS:
In this case, it would start with the root FS node, and ask it: "do you have a directory/file named etc?"
The node could say 'yes', 'no', or 'i'm not a directory, I'm a file' (should not be the case for the VFS root, but for the other ones it could be)
If it says yes, we continue and ask the child if it has a file named fstab. Etc...
2022-10-10 18:44:43 +02:00
2be70d0bc1
VFS: Use 64-bit numbers in read()
...
There is no need for any kind of 32-bit compatibility.
2022-10-09 21:30:38 +02:00
8158ddc94f
VFS: be more verbose
2022-10-09 21:19:22 +02:00
b38c52f8c7
more vfs stuff
2022-10-08 21:35:19 +02:00
f3d7e220ac
The beginnings of a VFS implementation!!
2022-10-08 21:22:46 +02:00
3686e03bb7
Cast %p usage to void*
...
Apparently, %p only accepts void*, and not any pointer type. Still better than casting a pointer to uint64_t.
2022-10-08 18:27:05 +02:00
3feb7782bc
Kernel/mmap, munmap: Use %p in printf
2022-10-08 18:24:05 +02:00
d5f59b666a
Kernel/Memory: Use %p in printf
2022-10-08 18:21:02 +02:00
8ce58e9e30
Kernel/InitRD: Use %p with printf()
2022-10-08 18:16:55 +02:00
5fc543c179
Kernel/ACPI: Use printf() with %p
2022-10-08 18:15:08 +02:00
3ee1f34bc4
Forgot to add break :)
...
And that, is why you test before pushing and commiting >.<
2022-10-08 18:08:50 +02:00
c67079dd74
Kernel, libc: Implement %p in *printf()
...
So we can avoid writing (unsigned long)ptr or (uint64_t)ptr everywhere when wanting to print a pointer.
2022-10-08 18:07:33 +02:00
f83a6ace51
Kernel, libc: Add support for providing a status code to exit()
...
The exit() libc function already accepted an integer, but didn't pass it on to the kernel since we had no mechanism for it to do that.
Now, the kernel stores a task's exit status to display it later (and in the future, return it to userspace via wait()/waitpid())
2022-10-08 17:56:40 +02:00
1e0c8c5fe7
Kernel: Strip kernel symbols when installing
...
Since we already extract the symbols into a separate file which the kernel then uses for backtraces, this only brings us a smaller kernel, with no downsides :)
2022-10-08 15:57:07 +02:00
309058888c
Bugfix: remove duplicate error check when loading a userspace ELF program
...
Also, remember to delete the allocated task, since we do not want memory leaks :)
2022-10-08 13:12:19 +00:00
159d025d9f
ACPI::get_rsdt_or_xsdt(): Use a temporary variable to do mappings, then set cache to it.
2022-10-08 15:05:59 +02:00
a5daa24fbf
Fix bug :)
2022-10-08 15:03:10 +02:00
533b7c9e71
Refactor ACPI::get_rsdt_or_xsdt()
...
Much better now.
Also, remove a FIXME in PMM.cpp, since we do map the page bitmap to virtual memory now.
2022-10-08 15:00:42 +02:00
abcf1b6118
Define PAGE_SIZE as 4096 and use it everywhere instead of using 4096 as a magic number
2022-10-08 14:52:28 +02:00
ce6ec3585c
Kernel, libc: Add ENOSYS
...
This error is returned by the kernel/C Library when an attempt is made to use a system call that doesn't exist.
2022-10-08 14:18:25 +02:00
a086ec514b
Remove the Superblock.h file which has never been used.
...
This file was included for a future Ext2 implementation. It should be included when said Ext2 implementation is actually started.
2022-10-08 13:28:30 +02:00
71e15e94af
Kernel, libc and userspace: Add basic errno support.
...
Kernel: Add an errno.h header with definitions for each header,
and return those, negated, from syscalls when there is an error.
mmap() returns an invalid address with errno encoded, instead of
returning a negated errno; this address is encoded as ffffffffffffffEE
where EE is errno in hex.
libc: make syscall() return -1 and set errno on error, instead of
returning the raw return value of the system call. Also, add mmap()
and munmap() wrappers in sys/mman.h :).
userspace: make the memeater program show the value of errno
when allocating memory fails.
Things to improve: add perror() and strerror() to make the errno
experience even better! >.<
2022-10-08 12:06:09 +02:00
1f655fabe2
The beginnings of Moon 0.10
...
Right now the kernel is the only thing with a version number, the user apps just fetch it from the kernel using the sys_getversion() syscall
2022-10-07 20:33:00 +02:00
028a1b1a3c
libc: Enable even more warnings
2022-10-07 18:19:06 +02:00
b7ee746da3
Kernel: Enable even more warnings
2022-10-07 18:10:20 +02:00
dc389da74e
Implement an ELFImage struct
...
This struct allows us to keep track of what memory is used by the loaded executable. For some reason, freeing this memory when the task exits triggers a kernel page fault, so I'm not doing that right now.
2022-10-07 17:54:05 +02:00
1ee5deb0f0
Remove unnecessary include
2022-10-06 19:51:16 +02:00
3fd24133e9
I'm so dumb
2022-10-06 18:04:32 +02:00
4a50a9e027
that was a dumb bug to fix
2022-10-06 18:02:57 +02:00
594d79143e
Kernel: enable -Wconversion
2022-10-06 17:13:34 +02:00
952d8fa294
Be more strict with warnings
2022-10-05 17:34:22 +02:00
3bfdad7a75
Kernel: Remove outdated rule in Makefile
2022-10-04 18:52:02 +02:00
25928a2a8d
Kernel: Always build config.cpp, even when it's not modified
2022-10-04 18:46:10 +02:00
7a998dda4d
Kernel: Do not stop interrupts by default in the interrupt handler
...
I always knew you can choose if interrupts are enabled for a specific ISR in the IDT entry, but at some moment there was a bug and I thought maybe that fixed it. Now reverting that doesn't break anything, so... let's do it :)
2022-10-04 18:45:46 +02:00
8f310dd307
PMM: Map the page bitmap to kernel heap once the PMM and VMM are both initialized
2022-10-04 18:36:09 +02:00
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
6bacded5cf
Update build system
2022-10-02 17:01:30 +02:00
f8a72f15c8
Adjust build system to be more flexible and to work with the new toolchain
2022-10-02 12:44:32 +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
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
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
3a796eb64c
Remove semicolon from macro
2022-09-20 16:56:43 +02:00
d1141dd713
Don't need this header
2022-09-20 16:55:32 +02:00
590740e72a
Change moon_version() to use a constant expression
2022-09-20 16:38:32 +02:00
1c1aa96293
Add a moon_version function that returns the full version string
2022-09-20 16:34:24 +02:00
6967fa9117
Update config.h to use a .cpp file that will be recompiled when it changes
2022-09-20 16:30:34 +02:00
15883c2dd3
Guard MOON_SUFFIX in config.h
2022-09-20 16:22:03 +02:00
7f1731ca2c
Moon 0.3-dev
2022-09-19 21:13:45 +02:00
ee8c2759a6
Got a stack tracer working!!
2022-09-19 21:11:43 +02:00
9d3030763b
We can fetch a symbol's name from its address!!
2022-09-19 20:54:05 +02:00
d79596f21b
Add a tool to auto-generate a symbol map, borrowed from SerenityOS :)
2022-09-19 20:35:24 +02:00
d8bfb76eef
Try to make TextRenderer work... still failing
...
I can now safely call try_initialize() in early_init though
2022-09-19 20:17:37 +02:00
86e4fce654
Separate conditions for easier debugging
2022-09-19 19:04:14 +02:00
31460fe148
I.... think I fixed the initrd code?
2022-09-19 17:06:08 +02:00
245d5e514d
Optimizations in Spinlock.asm
2022-09-19 16:36:34 +02:00
cb311c4981
Add initrd/boot/moon.elf and Luna.iso to the clean Makefile target
2022-09-18 20:20:51 +02:00
99e681aeb4
Forgot to add volatile
...
Did I check to see if it compiled before making the previous commit? Yes, of course, why are you asking? ...
2022-09-18 20:16:46 +02:00
d4a982306f
Add spinlocks
2022-09-18 20:15:19 +02:00
be31f2c017
Moon 0.2-dev
2022-09-18 17:16:44 +02:00
a42c4bd2da
Add -fno-omit-frame-pointer to CFLAGS
2022-09-18 17:13:56 +02:00
aad9aa1db5
Start the call stack with a null RBP before calling _start
2022-09-18 17:03:29 +02:00
4921db7b97
Clear rax register, just in case
2022-09-18 15:24:16 +02:00
cbac61d184
Rename _test_rdseed to asm_test_rdseed
2022-09-18 15:23:08 +02:00
48fae4a971
Cache RDSEED and RDRAND presence
2022-09-18 15:22:43 +02:00
183c3236d4
Fix terminology in keyboard IRQ
2022-09-18 09:47:58 +02:00
f7e7a6661d
Use kernel logging in interrupts instead of plain old printf()
2022-09-18 09:43:58 +02:00
783af21a7e
We are not using C
2022-09-18 09:43:29 +02:00
59ab8c016d
Load a bare-bones TSS for CPU0
2022-09-17 17:40:35 +02:00
355ca6ea9f
Change initrd/sys/config
2022-09-15 18:42:59 +02:00
9d19765b0e
Add the ability to toggle loglevels in KernelLog
2022-09-15 18:42:38 +02:00
18140a55ec
Make strstr take a const char* as a needle instead of a char*
2022-09-15 18:42:18 +02:00
0b278b2be2
Make divisor in PIT.cpp static
2022-09-15 18:12:43 +02:00
f33178a320
Log random number generation initialization
2022-09-15 18:07:17 +02:00
3e2c413b6a
add module to stack.cpp
2022-09-14 19:02:36 +02:00
efb28d3258
Randomness and stack protection!!
2022-09-14 18:54:40 +02:00
db4c8e96b8
commit
2022-09-14 17:55:24 +02:00
0cb59ee17f
please work please
2022-09-11 08:23:32 +02:00
d418842a48
Update TextRenderer to use kerrorln
2022-09-10 22:17:18 +02:00
f98a45aefe
Updated InitRD to use virtual mappings
2022-09-10 22:15:19 +02:00
4aeada05d3
Remove unused drawing files
2022-09-10 18:44:14 +02:00
6a0cf7cf98
New framebuffer class!!
2022-09-10 18:42:40 +02:00
e3e2952661
Consistent naming
2022-09-10 18:06:46 +02:00
fe672e6a18
Use appropriate logging functions
2022-09-08 17:03:17 +02:00
1ab0f7291b
Add kdbg and kdbgln
2022-09-08 17:02:40 +02:00
9de9eacb1d
add strstr
2022-09-08 17:02:16 +02:00
f3f9756106
Remove unused headers in main.cpp
2022-09-08 16:30:15 +02:00
276d20a33d
Remove log/Address.h, since Log.h has variadic functions now
2022-09-08 16:26:24 +02:00
d1498a5e82
Change module of RSDT from "acpi/rsdt" to "acpi"
2022-09-08 16:23:39 +02:00
76a3ceab32
Replace kinfoln with kwarnln where appropriate
2022-09-08 16:22:46 +02:00
3da3fd2c11
Update messages
2022-09-08 16:18:11 +02:00
929962efc9
Fixed size counting in RangeAllocator
...
Which was displaying VERY wrong sizes beforehand. (Number of regions * 4096 instead of number of bytes)
2022-09-07 20:01:44 +02:00
b4484e951d
LOTS MORE LOGGING. which is great, of course.
2022-09-07 19:41:08 +02:00
0cc3900e88
Make building with debug symbols conditional in the Makefile
2022-09-07 15:05:57 +02:00
c2391cee5d
Added config.h
2022-09-07 15:02:54 +02:00
aa6c578a3c
Fix bug in internal_printf
2022-09-07 15:02:38 +02:00
e936a143d3
MAKE LOG FUNCTIONS VARIADIC!!
2022-09-07 15:02:23 +02:00
1820286d8b
stuff
2022-09-07 10:33:22 +02:00
97aef95daa
Fix format specifiers
2022-09-06 18:31:27 +02:00
c9e13f0128
Add attribute(format) to *printf to detect ill-formed calls to those functions
2022-09-06 18:25:38 +02:00
bd0a24097f
Add a KernelMemoryManager namespace to wrap PMM + VMM
2022-09-06 18:08:15 +02:00
0fbc68ca88
Finish VMM
2022-09-06 13:49:17 +02:00
8bff2ee0f5
Add a RangeAllocator which serves as a physical memory allocator
2022-09-06 13:21:54 +02:00
716974a916
Add a minimal shutdown method, that only works on emulators (at least for now)
2022-09-06 12:13:43 +02:00
a8aca62771
Remove loop from the end of reboot since hang is now noreturn as well
2022-09-06 12:13:20 +02:00
003c730117
Make hang() noreturn
2022-09-06 12:12:55 +02:00
99192204fe
Update main.cpp with new functionality
2022-09-06 11:48:06 +02:00
a1659aa127
Add a reboot() function
...
This reboot function first tries to reboot using ACPI, then pulsing the CPU's RESET line through the keyboard, then triple-faulting. If we're still there, it halts.
2022-09-06 11:47:55 +02:00
aa673e1402
Add FADT header
2022-09-06 11:47:00 +02:00
5b132e3197
Fix FindTable method to work properly with RSDT instead of XSDT
2022-09-06 11:46:47 +02:00
f7f8c1068a
Move SDTHeader to separate file
2022-09-06 11:46:26 +02:00
78fe37ddb3
Move declaration of IDTR to header
2022-09-06 11:44:37 +02:00
6a6be3292d
Memory::get_system and Memory::get_usable
2022-09-05 17:13:12 +02:00
1367e88d88
Finally implement %l and %z format modifiers
...
Finally, we can use %zx with a 64-bit number instead of %x%x with 2 32-bit values split from a 64-bit number!
2022-09-05 16:59:45 +02:00
b47b86884f
Removed InitRD test code from main.cpp
2022-09-05 16:29:32 +02:00
1b727a66ea
Ready. Set. Go!
2022-09-05 16:13:51 +02:00