From 0f09b8ff164a69195ec6c25f6aea1cb607d826f8 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 15 Dec 2025 16:32:34 +0100 Subject: kernel: move implementation to kernel directory --- src/kapi/cio.cpp | 57 --------------------------------- src/kapi/memory.cpp | 91 ----------------------------------------------------- src/kapi/system.cpp | 20 ------------ 3 files changed, 168 deletions(-) delete mode 100644 src/kapi/cio.cpp delete mode 100644 src/kapi/memory.cpp delete mode 100644 src/kapi/system.cpp (limited to 'src/kapi') 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 -#include -#include - -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(&null_device::instance); - - auto set_output_device(output_device & device) -> std::optional - { - 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 -#include -#include - -namespace teachos::memory -{ - - namespace - { - struct bad_frame_allocator final : public frame_allocator - { - bad_frame_allocator static instance; - - auto allocate() noexcept -> std::optional 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(&bad_frame_allocator::instance); - // NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables) - constinit auto active_page_mapper = static_cast(&bad_page_mapper::instance); - - auto set_frame_allocator(frame_allocator & allocator) -> std::optional - { - if (&allocator == active_frame_allocator) - { - return {}; - } - return std::exchange(active_frame_allocator, &allocator); - } - - auto set_page_mapper(page_mapper & mapper) -> std::optional - { - if (&mapper == active_page_mapper) - { - return {}; - } - return std::exchange(active_page_mapper, &mapper); - } - - auto allocate_frame() -> std::optional - { - 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 -- cgit v1.2.3