#include "kernel/test_support/cio.hpp" #include #include "kernel/test_support/log_buffer.hpp" #include #include #include namespace { auto constinit is_initialized = std::atomic_flag{}; auto constinit device = std::optional{}; } // namespace namespace kapi::cio { auto init() -> void { if (is_initialized.test_and_set()) { throw std::logic_error("kapi::cio::init() called more than once"); } device.emplace(); set_output_device(*device); } } // namespace kapi::cio namespace kernel::tests::cio { auto deinit() -> void { if (!is_initialized.test()) { throw std::logic_error("kapi::cio::deinit() called before kapi::cio::init()"); } device.reset(); is_initialized.clear(); } auto log_buffer() -> kernel::tests::log_buffer & { return device->log_buffer(); } } // namespace kernel::tests::cio