aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64/src/user
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2025-12-15 17:13:12 +0100
committerFelix Morgner <felix.morgner@ost.ch>2025-12-15 17:13:12 +0100
commit7b9482ae637126ac9337876e60f519b493437711 (patch)
tree6fc71a253c8b0325d303bd34c95b564ba536ed14 /arch/x86_64/src/user
parent116f9332a206767c45095950f09f7c7447b561cf (diff)
parenta9eeec745e29d89afd48ee43d09432eb6fc35be7 (diff)
downloadteachos-7b9482ae637126ac9337876e60f519b493437711.tar.xz
teachos-7b9482ae637126ac9337876e60f519b493437711.zip
os: rework kernel architecture
Rework the code structure and architecture of the kernel by separating platform-dependent and platform-independent code more cleanly. As of this patchset, full feature parity has not been achieved. Nonetheless, a sufficient subset of functionality has been ported to the new architecture to demonstrate the feasibility of the new structure.
Diffstat (limited to 'arch/x86_64/src/user')
-rw-r--r--arch/x86_64/src/user/main.cpp35
1 files changed, 0 insertions, 35 deletions
diff --git a/arch/x86_64/src/user/main.cpp b/arch/x86_64/src/user/main.cpp
deleted file mode 100644
index 8b07e4a..0000000
--- a/arch/x86_64/src/user/main.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-#include "arch/user/main.hpp"
-
-#include "arch/context_switching/syscall/main.hpp"
-#include "arch/memory/heap/global_heap_allocator.hpp"
-
-#include <algorithm>
-#include <array>
-#include <atomic>
-#include <ranges>
-
-namespace teachos::arch::user
-{
- auto main() -> void
- {
- constexpr char 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)});
-
- // 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);
- });
-
- auto address = new uint64_t{10U};
- (void)address;
-
- for (;;)
- {
- }
- }
-} // namespace teachos::arch::user