From de96b0588ab680e1002c12df7ea7900d7eb71cf8 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Fri, 19 Dec 2025 11:46:46 +0100 Subject: kstd: move println to kstd --- arch/x86_64/include/x86_64/vga/text.hpp | 20 +------------------- arch/x86_64/src/kapi/memory.cpp | 9 +++++---- arch/x86_64/src/memory/kernel_mapper.cpp | 5 +++-- arch/x86_64/src/vga/text.cpp | 32 ++++++++++++++++++++++++-------- 4 files changed, 33 insertions(+), 33 deletions(-) (limited to 'arch/x86_64') diff --git a/arch/x86_64/include/x86_64/vga/text.hpp b/arch/x86_64/include/x86_64/vga/text.hpp index 9f80f94..fcda67f 100644 --- a/arch/x86_64/include/x86_64/vga/text.hpp +++ b/arch/x86_64/include/x86_64/vga/text.hpp @@ -121,25 +121,7 @@ namespace teachos::vga::x86_64::text */ auto cursor(bool enabled) -> void; - auto write(std::string_view text) -> void override - { - write(text, common_attributes::green_on_black); - } - - auto writeln(std::string_view text) -> void override - { - writeln(text, common_attributes::green_on_black); - } - - auto write_error(std::string_view text) -> void override - { - write(text, common_attributes::red_on_black); - } - - auto writeln_error(std::string_view text) -> void override - { - writeln(text, common_attributes::red_on_black); - } + auto write(cio::output_stream stream, std::string_view text) -> void override; private: using glyph = std::pair; diff --git a/arch/x86_64/src/kapi/memory.cpp b/arch/x86_64/src/kapi/memory.cpp index 0a45a51..5234110 100644 --- a/arch/x86_64/src/kapi/memory.cpp +++ b/arch/x86_64/src/kapi/memory.cpp @@ -1,7 +1,6 @@ #include "kapi/memory.hpp" #include "kapi/boot.hpp" -#include "kapi/cio.hpp" #include "kapi/system.hpp" #include "x86_64/boot/boot.hpp" @@ -17,6 +16,8 @@ #include "x86_64/memory/region_allocator.hpp" #include "x86_64/memory/scoped_mapping.hpp" +#include + #include #include @@ -164,7 +165,7 @@ namespace teachos::memory system::panic("[x86_64] Memory management has already been initialized."); } - cio::println("[x86_64:MEM] Enabling additional CPU protection features."); + kstd::println("[x86_64:MEM] Enabling additional CPU protection features."); enable_cpu_protections(); @@ -172,7 +173,7 @@ namespace teachos::memory buffered_allocator.emplace(&*region_based_allocator); recursive_page_mapper.emplace(*buffered_allocator); - cio::println("[x86_64:MEM] Preparing new paging hierarchy."); + kstd::println("[x86_64:MEM] Preparing new paging hierarchy."); auto new_pml4_frame = inject_faux_pml4(*buffered_allocator, *recursive_page_mapper); @@ -180,7 +181,7 @@ namespace teachos::memory remap_vga_text_mode_buffer(*recursive_page_mapper); remap_multiboot_information(*recursive_page_mapper); - cio::println("[x86_64:MEM] Switching to new paging hierarchy."); + kstd::println("[x86_64:MEM] Switching to new paging hierarchy."); auto cr3 = cpu::x86_64::cr3::read(); cr3.frame(new_pml4_frame); diff --git a/arch/x86_64/src/memory/kernel_mapper.cpp b/arch/x86_64/src/memory/kernel_mapper.cpp index 5295bb3..50fa325 100644 --- a/arch/x86_64/src/memory/kernel_mapper.cpp +++ b/arch/x86_64/src/memory/kernel_mapper.cpp @@ -1,11 +1,12 @@ #include "x86_64/memory/kernel_mapper.hpp" -#include "kapi/cio.hpp" #include "kapi/memory.hpp" #include "kapi/system.hpp" #include "x86_64/boot/ld.hpp" +#include + #include #include #include @@ -70,7 +71,7 @@ namespace teachos::memory::x86_64 auto kernel_mapper::map_section(section_header_type const & section, std::string_view name, page_mapper & mapper) -> void { - cio::println("[x86_64:MEM] mapping {} ({} bytes)", name, section.size); + kstd::println("[x86_64:MEM] mapping {} ({} bytes)", name, section.size); auto number_of_pages = (section.size + (PLATFORM_PAGE_SIZE - 1)) / PLATFORM_PAGE_SIZE; diff --git a/arch/x86_64/src/vga/text.cpp b/arch/x86_64/src/vga/text.cpp index d4548a2..8f6214e 100644 --- a/arch/x86_64/src/vga/text.cpp +++ b/arch/x86_64/src/vga/text.cpp @@ -1,6 +1,7 @@ #include "x86_64/vga/text.hpp" #include "kapi/boot.hpp" +#include "kapi/cio.hpp" #include "x86_64/boot/boot.hpp" #include "x86_64/boot/ld.hpp" @@ -76,6 +77,20 @@ namespace teachos::vga::x86_64::text m_position = (line() - scroll_count) * DEFAULT_TEXT_BUFFER_WIDTH; } + auto device::write(cio::output_stream stream, std::string_view text) -> void + { + auto attributes = [&] -> attribute { + switch (stream) + { + case cio::output_stream::stderr: + return common_attributes::red_on_black; + default: + return common_attributes::green_on_black; + } + }(); + write(text, attributes); + } + auto device::write(std::string_view code_points, attribute attribute) -> void { std::ranges::for_each(code_points, [&](auto code_point) -> void { write(code_point, attribute); }); @@ -87,16 +102,17 @@ namespace teachos::vga::x86_64::text { scroll(); } - buffer[m_position++] = std::pair{code_point, std::bit_cast(attribute)}; - }; - auto device::writeln(std::string_view code_points, attribute attribute) -> void - { - std::ranges::for_each(code_points, [&](auto code_point) -> void { write(code_point, attribute); }); - if (column()) + if (code_point == '\n') { - newline(); + if (column()) + { + newline(); + } + return; } - } + + buffer[m_position++] = std::pair{code_point, std::bit_cast(attribute)}; + }; } // namespace teachos::vga::x86_64::text -- cgit v1.2.3