| 65 | std::atomic<size_t> g_cores_ready{0}; |
| 66 | |
| 67 | void test_thread_entry(void* arg) { |
| 68 | auto idx = reinterpret_cast<uint64_t>(arg); |
| 69 | auto& test = test_cases[idx]; |
| 70 | |
| 71 | klog::Info("[TEST] Starting: {}", test.name); |
| 72 | |
| 73 | bool passed = test.func(); |
| 74 | |
| 75 | klog::Info("[TEST] Finished: {} — {}", test.name, passed ? "PASS" : "FAIL"); |
| 76 | |
| 77 | sys_exit(passed ? 0 : 1); |
| 78 | } |
| 79 | |
| 80 | void print_test_summary() { |
| 81 | int passed = 0; |