diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-04-01 08:49:21 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-04-01 08:49:21 +0200 |
| commit | 5ae03c52fe33882416aa6044993d8422ccb33ab4 (patch) | |
| tree | c57eec815885c5fde439cedb48da61cc886fc84b | |
| parent | 9b80bd2ca528a376c2bb6831020b3d78e4b252d6 (diff) | |
| download | teachos-5ae03c52fe33882416aa6044993d8422ccb33ab4.tar.xz teachos-5ae03c52fe33882416aa6044993d8422ccb33ab4.zip | |
kernel: begin basic bht implementation
| -rw-r--r-- | .clangd | 7 | ||||
| -rw-r--r-- | kernel/CMakeLists.txt | 15 | ||||
| -rw-r--r-- | kernel/tests/CMakeLists.txt | 49 | ||||
| -rw-r--r-- | kernel/tests/include/kernel/tests/cpu.hpp | 18 | ||||
| -rw-r--r-- | kernel/tests/kapi/cpu.cpp | 13 | ||||
| -rw-r--r-- | kernel/tests/src/main.cpp | 6 | ||||
| -rw-r--r-- | kernel/tests/src/test_support.cpp | 19 | ||||
| -rw-r--r-- | libs/kstd/CMakeLists.txt | 4 |
8 files changed, 119 insertions, 12 deletions
@@ -9,11 +9,12 @@ Documentation: --- If: - PathMatch: + PathMatch: - "libs/.*/tests/.*\\.cpp" + - "kernel/tests/.*\\.cpp" Diagnostics: ClangTidy: - Remove: '*' + Remove: "*" CompileFlags: Add: - - -Wno-c2y-extensions
\ No newline at end of file + - -Wno-c2y-extensions diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index 4aa72e1..854fb33 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -1,4 +1,4 @@ -add_library("kernel-objs" OBJECT +add_library("kernel_objs" OBJECT # Platform-independent KAPI implementation "kapi/boot_modules.cpp" "kapi/cio.cpp" @@ -14,7 +14,6 @@ add_library("kernel-objs" OBJECT # Kernel Implementation "src/memory/bitmap_allocator.cpp" "src/memory/block_list_allocator.cpp" - "src/memory/operators.cpp" "src/memory.cpp" "src/devices/block_device.cpp" "src/devices/block_device_utils.cpp" @@ -39,28 +38,29 @@ add_library("kernel-objs" OBJECT "src/filesystem/vfs.cpp" ) -target_include_directories("kernel-objs" PUBLIC +target_include_directories("kernel_objs" PUBLIC "include" ) -target_link_libraries("kernel-objs" PUBLIC +target_link_libraries("kernel_objs" PUBLIC "os::kapi" ) file(GLOB_RECURSE KERNEL_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "include/**.hpp") -target_sources("kernel-objs" PUBLIC +target_sources("kernel_objs" PUBLIC FILE_SET HEADERS BASE_DIRS "include" FILES ${KERNEL_HEADERS} ) -add_library("os::kernel" ALIAS "kernel-objs") +add_library("os::kernel" ALIAS "kernel_objs") if(CMAKE_CROSSCOMPILING) add_executable("kernel" "src/main.cpp" + "src/memory/operators.cpp" ) target_link_libraries("kernel" PRIVATE @@ -85,5 +85,8 @@ if(CMAKE_CROSSCOMPILING) target_strip("kernel") target_generate_bootable_iso("kernel") +else() + enable_coverage("kernel_objs") + add_subdirectory("tests") endif() diff --git a/kernel/tests/CMakeLists.txt b/kernel/tests/CMakeLists.txt new file mode 100644 index 0000000..96053f1 --- /dev/null +++ b/kernel/tests/CMakeLists.txt @@ -0,0 +1,49 @@ +#[============================================================================[ +# Kernel Test Support (Fakes, Stubs, Mocks, etc.) +#]============================================================================] + +add_library("kernel_test_support" + "kapi/cpu.cpp" +) + +target_include_directories("kernel_test_support" PUBLIC + "include" +) + +target_link_libraries("kernel_test_support" PUBLIC + "os::kapi" +) + +add_library("os::kernel_test_support" ALIAS "kernel_test_support") + +#[============================================================================[ +# Kernel Tests +#]============================================================================] + +add_executable("kernel_tests" + "src/main.cpp" + "src/test_support.cpp" +) + +target_include_directories("kernel_tests" PRIVATE + "include" +) + +target_link_libraries("kernel_tests" PRIVATE + "os::kernel_test_support" + "os::kernel" + "libs::kstd" + "Catch2::Catch2" +) + +set_target_properties("kernel_tests" PROPERTIES + C_CLANG_TIDY "" + CXX_CLANG_TIDY "" + EXCLUDE_FROM_ALL NO +) + +enable_coverage("kernel_tests") + +add_executable("os::kernel_tests" ALIAS "kernel_tests") + +catch_discover_tests("os::kernel_tests")
\ No newline at end of file diff --git a/kernel/tests/include/kernel/tests/cpu.hpp b/kernel/tests/include/kernel/tests/cpu.hpp new file mode 100644 index 0000000..81c0c6f --- /dev/null +++ b/kernel/tests/include/kernel/tests/cpu.hpp @@ -0,0 +1,18 @@ +#ifndef TEACHOS_KERNEL_TESTS_CPU_HPP +#define TEACHOS_KERNEL_TESTS_CPU_HPP + +#include <stdexcept> + +namespace kernel::tests::cpu +{ + + struct halt : std::runtime_error + { + halt() + : std::runtime_error{"CPU halt requested!"} + {} + }; + +} // namespace kernel::tests::cpu + +#endif
\ No newline at end of file diff --git a/kernel/tests/kapi/cpu.cpp b/kernel/tests/kapi/cpu.cpp new file mode 100644 index 0000000..f03fca0 --- /dev/null +++ b/kernel/tests/kapi/cpu.cpp @@ -0,0 +1,13 @@ +#include "kernel/tests/cpu.hpp" + +#include <kapi/cpu.hpp> + +namespace kapi::cpu +{ + + auto halt() -> void + { + throw kernel::tests::cpu::halt{}; + } + +} // namespace kapi::cpu
\ No newline at end of file diff --git a/kernel/tests/src/main.cpp b/kernel/tests/src/main.cpp new file mode 100644 index 0000000..89bb1c7 --- /dev/null +++ b/kernel/tests/src/main.cpp @@ -0,0 +1,6 @@ +#include <catch2/catch_session.hpp> + +auto main(int argc, char ** argv) -> int +{ + return Catch::Session().run(argc, argv); +}
\ No newline at end of file diff --git a/kernel/tests/src/test_support.cpp b/kernel/tests/src/test_support.cpp new file mode 100644 index 0000000..bbf5dc0 --- /dev/null +++ b/kernel/tests/src/test_support.cpp @@ -0,0 +1,19 @@ +#include "kapi/cpu.hpp" + +#include "kernel/tests/cpu.hpp" + +#include <catch2/catch_test_macros.hpp> + +SCENARIO("Kernel test support infrastructure", "[support]") +{ + GIVEN("the test support infrastructure is initialized") + { + WHEN("when a CPU halt is requested") + { + THEN("the correct exception is thrown") + { + REQUIRE_THROWS_AS(kapi::cpu::halt(), kernel::tests::cpu::halt); + } + } + } +}
\ No newline at end of file diff --git a/libs/kstd/CMakeLists.txt b/libs/kstd/CMakeLists.txt index 7169aa8..ec0f441 100644 --- a/libs/kstd/CMakeLists.txt +++ b/libs/kstd/CMakeLists.txt @@ -40,9 +40,7 @@ if(CMAKE_CROSSCOMPILING) list(TRANSFORM KSTD_LIBC_SYMBOLS PREPEND "-Wl,--undefined=") target_link_options("kstd" INTERFACE ${KSTD_LIBC_SYMBOLS}) -endif() - -if(NOT CMAKE_CROSSCOMPILING) +else() add_executable("kstd_tests" "tests/src/flat_map.cpp" "tests/src/vector.cpp" |
