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

Method SetSignalAction

src/task/signal.cpp:161–188  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

159}
160
161auto TaskManager::SetSignalAction(int signum, const SignalAction& action,
162 SignalAction* old_action) -> Expected<void> {
163 auto* current = GetCurrentTask();
164 if (!current || !current->aux) {
165 return std::unexpected(Error{ErrorCode::kTaskNoCurrentTask});
166 }
167
168 if (!SignalState::IsValid(signum)) {
169 return std::unexpected(Error{ErrorCode::kSignalInvalidNumber});
170 }
171
172 if (SignalState::IsUncatchable(signum)) {
173 return std::unexpected(Error{ErrorCode::kSignalUncatchable});
174 }
175
176 auto& signals = current->aux->signals;
177
178 if (old_action) {
179 *old_action = signals.actions[signum];
180 }
181
182 signals.actions[signum] = action;
183
184 klog::Debug("SetSignalAction: pid={} set handler for signal {} ({})",
185 current->pid, signum, SignalState::GetSignalName(signum));
186
187 return {};
188}
189
190auto TaskManager::SetSignalMask(int how, uint32_t set, uint32_t* oldset)
191 -> Expected<void> {

Callers 1

sys_sigactionFunction · 0.80

Calls 1

DebugFunction · 0.85

Tested by

no test coverage detected