diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-04-02 09:51:44 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-04-02 09:52:13 +0200 |
| commit | f7ff847498d629c05bb206b41a172f6735e2afe6 (patch) | |
| tree | 874d35673d59d0f1e4ebcf01d61d9160ba655f9c /kernel/include | |
| parent | 0c01a95325b26151ff3c9a70142f5dc83ff7d53f (diff) | |
| download | teachos-f7ff847498d629c05bb206b41a172f6735e2afe6.tar.xz teachos-f7ff847498d629c05bb206b41a172f6735e2afe6.zip | |
kernel/tests: clean up implementation structure
Diffstat (limited to 'kernel/include')
| -rw-r--r-- | kernel/include/kernel/test_support/cio.hpp | 29 | ||||
| -rw-r--r-- | kernel/include/kernel/test_support/cpu.hpp | 2 | ||||
| -rw-r--r-- | kernel/include/kernel/test_support/log_buffer.hpp | 49 | ||||
| -rw-r--r-- | kernel/include/kernel/test_support/memory.hpp | 6 | ||||
| -rw-r--r-- | kernel/include/kernel/test_support/page_mapper.hpp | 2 | ||||
| -rw-r--r-- | kernel/include/kernel/test_support/simulated_memory.hpp | 23 |
6 files changed, 78 insertions, 33 deletions
diff --git a/kernel/include/kernel/test_support/cio.hpp b/kernel/include/kernel/test_support/cio.hpp new file mode 100644 index 0000000..4b897b5 --- /dev/null +++ b/kernel/include/kernel/test_support/cio.hpp @@ -0,0 +1,29 @@ +#ifndef TEACHOS_KERNEL_TEST_SUPPORT_CIO_HPP +#define TEACHOS_KERNEL_TEST_SUPPORT_CIO_HPP + +#include "kapi/cio.hpp" + +#include "kernel/test_support/log_buffer.hpp" + +#include <string_view> + +namespace kernel::tests::cio +{ + struct output_device : kapi::cio::output_device + { + output_device() = default; + + auto write(kapi::cio::output_stream stream, std::string_view text) -> void override; + + [[nodiscard]] auto log_buffer() noexcept -> kernel::tests::log_buffer &; + + private: + kernel::tests::log_buffer m_log_buffer{}; + }; + + auto deinit() -> void; + + [[nodiscard]] auto log_buffer() -> kernel::tests::log_buffer &; +} // namespace kernel::tests::cio + +#endif
\ No newline at end of file diff --git a/kernel/include/kernel/test_support/cpu.hpp b/kernel/include/kernel/test_support/cpu.hpp index 5445473..037b1b2 100644 --- a/kernel/include/kernel/test_support/cpu.hpp +++ b/kernel/include/kernel/test_support/cpu.hpp @@ -13,6 +13,8 @@ namespace kernel::tests::cpu {} }; + auto deinit() -> void; + } // namespace kernel::tests::cpu #endif
\ No newline at end of file diff --git a/kernel/include/kernel/test_support/log_buffer.hpp b/kernel/include/kernel/test_support/log_buffer.hpp index 581b32f..41d9a76 100644 --- a/kernel/include/kernel/test_support/log_buffer.hpp +++ b/kernel/include/kernel/test_support/log_buffer.hpp @@ -4,29 +4,34 @@ #include <string> #include <vector> -namespace kernel::tests::log_buffer +namespace kernel::tests { - //! Append a message to the testing log buffer. - //! - //! @param message The message to append. - auto append(std::string const & message) -> void; - - //! Clear the testing log buffer. - auto clear() -> void; - - //! Get the testing log buffer as a single string. - //! - //! @return The testing log buffer as a single string. - auto flat_messages() -> std::string; - - //! Get the testing log buffer. - //! - //! @note Messages may be split across multiple entries if they are longer than the internal kernel print buffer size. - //! - //! @return The testing log buffer. - auto messages() -> std::vector<std::string> const &; - -} // namespace kernel::tests::log_buffer + struct log_buffer + { + //! Append a message to this buffer. + //! @param message The message to append. + auto append(std::string const & message) -> void; + + //! Clear this buffer. + auto clear() -> void; + + //! Get all messages in this buffer as a single string. + //! + //! @return All messages in this buffer as a single string. + auto flat_messages() -> std::string; + + //! Get all messages in this buffer. + //! + //! @note Messages may be split across multiple entries if they are longer than the internal kernel print buffer + //! size. + //! + //! @return All messages in this buffer. + auto messages() -> std::vector<std::string> const &; + + private: + std::vector<std::string> m_messages{}; + }; +} // namespace kernel::tests #endif
\ No newline at end of file diff --git a/kernel/include/kernel/test_support/memory.hpp b/kernel/include/kernel/test_support/memory.hpp index c6b7449..b475116 100644 --- a/kernel/include/kernel/test_support/memory.hpp +++ b/kernel/include/kernel/test_support/memory.hpp @@ -5,7 +5,9 @@ namespace kernel::tests::memory { - auto heap_base() -> kapi::memory::linear_address; -} + auto deinit() -> void; + + auto virtual_base() -> kapi::memory::linear_address; +} // namespace kernel::tests::memory #endif
\ No newline at end of file diff --git a/kernel/include/kernel/test_support/page_mapper.hpp b/kernel/include/kernel/test_support/page_mapper.hpp index a40aa2e..1658455 100644 --- a/kernel/include/kernel/test_support/page_mapper.hpp +++ b/kernel/include/kernel/test_support/page_mapper.hpp @@ -16,7 +16,7 @@ namespace kernel::tests struct page_mapper : kapi::memory::page_mapper { - explicit page_mapper(kstd::units::bytes memory_size); + page_mapper(kstd::units::bytes physical_size, kstd::units::bytes virtual_size); auto map(kapi::memory::page page, kapi::memory::frame frame, flags) -> std::byte * override; diff --git a/kernel/include/kernel/test_support/simulated_memory.hpp b/kernel/include/kernel/test_support/simulated_memory.hpp index 9a391d8..1619f31 100644 --- a/kernel/include/kernel/test_support/simulated_memory.hpp +++ b/kernel/include/kernel/test_support/simulated_memory.hpp @@ -6,27 +6,34 @@ #include <kstd/units> #include <cstddef> +#include <sys/types.h> namespace kernel::tests { struct simulated_memory { - explicit simulated_memory(kstd::units::bytes size); + simulated_memory(kstd::units::bytes physical_size, kstd::units::bytes virtual_size); ~simulated_memory(); auto clear() -> void; - [[nodiscard]] auto ram_base() noexcept -> std::byte *; - [[nodiscard]] auto ram_base() const noexcept -> std::byte const *; - [[nodiscard]] auto heap_base() const noexcept -> kapi::memory::linear_address; - [[nodiscard]] auto heap_size() const noexcept -> kstd::units::bytes; - [[nodiscard]] auto memory_descriptor() const noexcept -> int; + [[nodiscard]] auto physical_base() noexcept -> std::byte *; + [[nodiscard]] auto physical_base() const noexcept -> std::byte const *; + [[nodiscard]] auto physical_size() const noexcept -> kstd::units::bytes; + + [[nodiscard]] auto virtual_base() const noexcept -> kapi::memory::linear_address; + [[nodiscard]] auto virtual_size() const noexcept -> kstd::units::bytes; + + [[nodiscard]] auto descriptor() const noexcept -> int; + + [[nodiscard]] auto map(kstd::units::bytes size, std::byte * to, off_t offset) -> std::byte *; private: - int m_memory_descriptor{}; - kstd::units::bytes m_size{0}; + int m_descriptor{}; + kstd::units::bytes m_physical_size{0}; + kstd::units::bytes m_virtual_size{0}; std::byte * m_physical_base{nullptr}; std::byte * m_virtual_base{nullptr}; }; |
