diff options
| author | Fabian Imhof <fabian.imhof@ost.ch> | 2025-05-18 13:21:42 +0000 |
|---|---|---|
| committer | Fabian Imhof <fabian.imhof@ost.ch> | 2025-05-18 13:21:42 +0000 |
| commit | 1b5a771a34743a2973a82de5ebdfd22da030b841 (patch) | |
| tree | 19e81ac7c122225efedcab74051a46283723400a /arch/x86_64/src | |
| parent | 5c314eef566df2732973e8cb35974ec49748adba (diff) | |
| download | teachos-1b5a771a34743a2973a82de5ebdfd22da030b841.tar.xz teachos-1b5a771a34743a2973a82de5ebdfd22da030b841.zip | |
update linker file and improve section parsing
Diffstat (limited to 'arch/x86_64/src')
| -rw-r--r-- | arch/x86_64/src/user/main.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/arch/x86_64/src/user/main.cpp b/arch/x86_64/src/user/main.cpp index 747a8a4..e621327 100644 --- a/arch/x86_64/src/user/main.cpp +++ b/arch/x86_64/src/user/main.cpp @@ -4,22 +4,29 @@ #include "arch/memory/heap/global_heap_allocator.hpp" #include <algorithm> +#include <array> #include <atomic> +#include <ranges> namespace teachos::arch::user { auto main() -> void { + // Test writing to VGA Buffer char constexpr syscall_message[] = "Successfully entered user mode and wrote to VGA buffer via syscall!"; context_switching::syscall::syscall(context_switching::syscall::type::WRITE, {reinterpret_cast<uint64_t>(&syscall_message)}); - int test = std::max(5, 10); - (void)test; - - std::atomic<bool> locked = {false}; - locked.exchange(true); + // Test C++ standard library + std::array<std::atomic<uint8_t>, 4> array_test = {std::atomic<uint8_t>{5}, std::atomic<uint8_t>{10}, + std::atomic<uint8_t>{15}, std::atomic<uint8_t>{20}}; + std::ranges::for_each(array_test, [](auto & item) { + auto value = item.load(); + uint8_t max_value = std::max(value, uint8_t{10}); + item.exchange(max_value + 2); + }); + // Test user heap auto address = memory::heap::global_heap_allocator::malloc(8U); (void)address; |
