aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2025-12-15 16:32:34 +0100
committerFelix Morgner <felix.morgner@ost.ch>2025-12-15 16:32:34 +0100
commit0f09b8ff164a69195ec6c25f6aea1cb607d826f8 (patch)
treea59cbf95b3564312ab4dcfebabb2d617b6cdf8ab /src
parent43ddde5e30a0d71aa11025a5ae232cea83e7fbde (diff)
downloadteachos-0f09b8ff164a69195ec6c25f6aea1cb607d826f8.tar.xz
teachos-0f09b8ff164a69195ec6c25f6aea1cb607d826f8.zip
kernel: move implementation to kernel directory
Diffstat (limited to 'src')
-rw-r--r--src/kapi/cio.cpp57
-rw-r--r--src/kapi/memory.cpp91
-rw-r--r--src/kapi/system.cpp20
-rw-r--r--src/kstd.cpp13
-rw-r--r--src/main.cpp14
5 files changed, 0 insertions, 195 deletions
diff --git a/src/kapi/cio.cpp b/src/kapi/cio.cpp
deleted file mode 100644
index 66493b6..0000000
--- a/src/kapi/cio.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-#include "kapi/cio.hpp"
-
-#include <optional>
-#include <string_view>
-#include <utility>
-
-namespace teachos::cio
-{
- namespace
- {
- struct null_device final : public output_device
- {
- null_device static instance;
-
- auto write(std::string_view) -> void override {}
- auto writeln(std::string_view) -> void override {}
-
- auto write_error(std::string_view) -> void override {}
- auto writeln_error(std::string_view) -> void override {}
- };
-
- constinit null_device null_device::instance;
- } // namespace
-
- // NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables)
- constinit auto active_device = static_cast<output_device *>(&null_device::instance);
-
- auto set_output_device(output_device & device) -> std::optional<output_device *>
- {
- if (&device == active_device)
- {
- return {};
- }
- return std::exchange(active_device, &device);
- }
-
- auto print(std::string_view text) -> void
- {
- active_device->write(text);
- }
-
- auto println(std::string_view text) -> void
- {
- active_device->writeln(text);
- }
-
- auto print_error(std::string_view text) -> void
- {
- active_device->write_error(text);
- }
-
- auto println_error(std::string_view text) -> void
- {
- active_device->writeln_error(text);
- }
-
-} // namespace teachos::cio \ No newline at end of file
diff --git a/src/kapi/memory.cpp b/src/kapi/memory.cpp
deleted file mode 100644
index d6c84e1..0000000
--- a/src/kapi/memory.cpp
+++ /dev/null
@@ -1,91 +0,0 @@
-#include "kapi/memory.hpp"
-
-#include "kapi/system.hpp"
-
-#include <cstddef>
-#include <optional>
-#include <utility>
-
-namespace teachos::memory
-{
-
- namespace
- {
- struct bad_frame_allocator final : public frame_allocator
- {
- bad_frame_allocator static instance;
-
- auto allocate() noexcept -> std::optional<frame> override
- {
- system::panic("Tried to allocate a frame without an active allocator.");
- }
-
- auto release(frame) -> void override
- {
- system::panic("Tried to release a frame without an active allocator.");
- }
- };
-
- struct bad_page_mapper final : public page_mapper
- {
- bad_page_mapper static instance;
-
- auto map(page, frame, flags) -> std::byte * override
- {
- system::panic("Tried to map a page without an active mapper.");
- }
-
- auto unmap(page) -> void override
- {
- system::panic("Tried to unmap a page without an active mapper.");
- }
-
- auto try_unmap(page) noexcept -> bool override
- {
- return false;
- }
- };
-
- constinit bad_frame_allocator bad_frame_allocator::instance{};
- constinit bad_page_mapper bad_page_mapper::instance{};
- } // namespace
-
- // NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables)
- constinit auto active_frame_allocator = static_cast<frame_allocator *>(&bad_frame_allocator::instance);
- // NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables)
- constinit auto active_page_mapper = static_cast<page_mapper *>(&bad_page_mapper::instance);
-
- auto set_frame_allocator(frame_allocator & allocator) -> std::optional<frame_allocator *>
- {
- if (&allocator == active_frame_allocator)
- {
- return {};
- }
- return std::exchange(active_frame_allocator, &allocator);
- }
-
- auto set_page_mapper(page_mapper & mapper) -> std::optional<page_mapper *>
- {
- if (&mapper == active_page_mapper)
- {
- return {};
- }
- return std::exchange(active_page_mapper, &mapper);
- }
-
- auto allocate_frame() -> std::optional<frame>
- {
- return active_frame_allocator->allocate();
- }
-
- auto map(page page, frame frame) -> std::byte *
- {
- return active_page_mapper->map(page, frame, page_mapper::flags::empty);
- }
-
- auto unmap(page page) -> void
- {
- return active_page_mapper->unmap(page);
- }
-
-} // namespace teachos::memory \ No newline at end of file
diff --git a/src/kapi/system.cpp b/src/kapi/system.cpp
deleted file mode 100644
index 3ae3f29..0000000
--- a/src/kapi/system.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
-#include "kapi/system.hpp"
-
-#include "kapi/cio.hpp"
-#include "kapi/cpu.hpp"
-
-namespace teachos::system
-{
-
- [[gnu::weak]]
- auto panic(std::string_view message, std::source_location location) -> void
- {
- cio::println_error("!!!Kernel Panic!!! ");
- cio::println_error(message);
- cio::println_error(location.file_name());
- cio::println_error(location.function_name());
-
- cpu::halt();
- }
-
-} // namespace teachos::system
diff --git a/src/kstd.cpp b/src/kstd.cpp
deleted file mode 100644
index 2149c12..0000000
--- a/src/kstd.cpp
+++ /dev/null
@@ -1,13 +0,0 @@
-#include "kapi/system.hpp"
-
-#include <kstd/bits/os.hpp>
-
-namespace kstd::os
-{
-
- auto panic(std::string_view message, std::source_location location) -> void
- {
- teachos::system::panic(message, location);
- }
-
-} // namespace kstd::os \ No newline at end of file
diff --git a/src/main.cpp b/src/main.cpp
deleted file mode 100644
index 3394275..0000000
--- a/src/main.cpp
+++ /dev/null
@@ -1,14 +0,0 @@
-#include "kapi/cio.hpp"
-#include "kapi/memory.hpp"
-#include "kapi/system.hpp"
-
-auto main() -> int
-{
- teachos::cio::init();
- teachos::cio::println("[OS] IO subsystem initialized.");
-
- teachos::memory::init();
- teachos::cio::println("[OS] Memory subsystem initialized.");
-
- teachos::system::panic("Returning from kernel main!");
-}