MCPcopy Create free account
hub / github.com/Simple-XX/SimpleKernel / test_sigterm_default

Function test_sigterm_default

tests/system_test/signal_test.cpp:36–78  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

34}
35
36void test_sigterm_default(void* /*arg*/) {
37 klog::Info("=== Signal: SIGTERM Default Test ===");
38 bool passed = true;
39
40 auto& tm = TaskManagerSingleton::instance();
41 auto* self = tm.GetCurrentTask();
42
43 auto child = kstd::make_unique<TaskControlBlock>("SigtermTarget", 10,
44 sigterm_target, nullptr);
45 child->aux->parent_pid = self->pid;
46 auto* child_raw = child.get();
47 tm.AddTask(std::move(child));
48 Pid child_pid = child_raw->pid;
49
50 // Give the child time to start sleeping
51 (void)sys_sleep(100);
52
53 // Send SIGTERM
54 int ret = sys_kill(static_cast<int>(child_pid), signal_number::kSigTerm);
55 if (ret != 0) {
56 klog::Err("test_sigterm_default: sys_kill returned {}", ret);
57 passed = false;
58 }
59
60 // Wait for the child to be terminated
61 int status = 0;
62 auto wait_result = tm.Wait(child_pid, &status, false, false);
63 if (!wait_result.has_value() || wait_result.value() != child_pid) {
64 klog::Err("test_sigterm_default: Wait failed");
65 passed = false;
66 } else if (status != 128 + signal_number::kSigTerm) {
67 klog::Err("test_sigterm_default: exit code {} (expected {})", status,
68 128 + signal_number::kSigTerm);
69 passed = false;
70 }
71
72 if (!passed) {
73 g_tests_failed++;
74 }
75 g_tests_completed++;
76 klog::Info("Signal SIGTERM Default Test: {}", passed ? "PASSED" : "FAILED");
77 sys_exit(passed ? 0 : 1);
78}
79
80// ---------------------------------------------------------------------------
81// test_sigkill

Callers

nothing calls this directly

Calls 8

InfoFunction · 0.85
sys_sleepFunction · 0.85
sys_killFunction · 0.85
ErrFunction · 0.85
sys_exitFunction · 0.85
GetCurrentTaskMethod · 0.80
AddTaskMethod · 0.80
WaitMethod · 0.80

Tested by

no test coverage detected