From 8ad4fad2440c20aa19e26ade8cdb881cab7734e2 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 6 Apr 2026 19:09:34 +0200 Subject: kernel/tests: fix link issue --- .lazy.lua | 13 ++++++ .nvim.lua | 78 +++++++++++++++++++++++++++++++ kernel/CMakeLists.txt | 1 + kernel/src/test_support/kapi/platform.cpp | 14 ++++++ 4 files changed, 106 insertions(+) create mode 100644 .lazy.lua create mode 100644 .nvim.lua create mode 100644 kernel/src/test_support/kapi/platform.cpp diff --git a/.lazy.lua b/.lazy.lua new file mode 100644 index 0000000..1c2df6e --- /dev/null +++ b/.lazy.lua @@ -0,0 +1,13 @@ +return { + { + "nvim-neo-tree/neo-tree.nvim", + opts = { + filesystem = { + filtered_items = { + visible = false, + hide_gitignored = true, + }, + }, + } + } +} diff --git a/.nvim.lua b/.nvim.lua new file mode 100644 index 0000000..2cd34d6 --- /dev/null +++ b/.nvim.lua @@ -0,0 +1,78 @@ +local workspace_folder = vim.fn.getcwd() + +local function safe_require(module) + local ok, mod = pcall(require, module) + if not ok then return nil end + return mod +end + +-- C++ +local default_clangd_config = vim.deepcopy(vim.lsp.config["clangd"]) or {} +default_clangd_config.cmd = { + "clangd", + "--background-index", + "--clang-tidy", + "--header-insertion=iwyu", + "--completion-style=detailed", + string.format("--compile-commands-dir=%s/build", workspace_folder), + "--query-driver=**/x86_64-pc-elf-g++" +} + +vim.lsp.config("clangd", default_clangd_config) + +vim.filetype.add({ + pattern = { + [".*/kstd/include/kstd/.*"] = "cpp", + } +}) + +-- Debugging +local dap = require("dap") +local qemu_job = nil + +dap.adapters.teachos_qemu_mi = function(callback, config) + if qemu_job then + qemu_job:kill(9) + end + + local artifact_path = config.program + if not artifact_path then + vim.notify("Fatal: No artifact path resolved by CMake", vim.log.levels.ERROR) + return + end + + local elf_path = string.gsub(artifact_path, "%.sym$", ".elf") + + qemu_job = vim.system({ + "qemu-system-x86_64", + "-kernel", elf_path, + "-s", "-S", + "-nographic" + }, { text = true }) + + vim.defer_fn(function() + callback({ + type = "executable", + command = vim.fn.stdpath("data") .. "/mason/bin/OpenDebugAD7", + }) + end, 500) +end + +dap.listeners.after.event_terminated["teachos_qemu_teardown"] = function() + if qemu_job then + qemu_job:kill(9) + qemu_job = nil + end +end + +require("cmake-tools").setup({ + cmake_dap_configuration = { + name = "(gdb) QEMU MI Attach", + type = "teachos_qemu_mi", + request = "launch", + miDebuggerServerAddress = "localhost:1234", + miDebuggerPath = "x86_64-pc-elf-gdb", + stopAtEntry = true, + } +}) + diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index 22513ea..ef73586 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -101,6 +101,7 @@ else() "src/test_support/kapi/cio.cpp" "src/test_support/kapi/interrupts.cpp" "src/test_support/kapi/memory.cpp" + "src/test_support/kapi/platform.cpp" "src/test_support/log_buffer.cpp" "src/test_support/output_device.cpp" "src/test_support/page_mapper.cpp" diff --git a/kernel/src/test_support/kapi/platform.cpp b/kernel/src/test_support/kapi/platform.cpp new file mode 100644 index 0000000..497c992 --- /dev/null +++ b/kernel/src/test_support/kapi/platform.cpp @@ -0,0 +1,14 @@ +#include "kapi/platform.hpp" + +#include "kapi/devices.hpp" + +namespace kapi::platform +{ + + auto discover_cpu_topology(devices::bus &) -> bool + { + // TODO: implement more meaningful simulated CPU topology discovery + return true; + } + +} // namespace kapi::platform \ No newline at end of file -- cgit v1.2.3