sigaction
struct sigaction handler; // the new signal handler
struct sigaction handler; // the signal handler
struct sigaction handler; // the signal handler
int sigaction(int _signal, const struct sigaction* action,
struct sigaction* oldAction);
const struct sigaction& handler,
const struct sigaction& handler,
const struct sigaction& Handler() const { return fHandler; }
struct sigaction fHandler;
status_t arch_setup_signal_frame(Thread *thread, struct sigaction *action,
struct sigaction;
status_t _user_sigaction(int sig, const struct sigaction *newAction,
struct sigaction *oldAction);
struct sigaction& SignalActionFor(int32 signal)
struct sigaction fSignalActions[MAX_SIGNAL_NUMBER];
bool user_debug_handle_signal(int signal, struct sigaction *handler,
int __sigaction(int signal, const struct sigaction* action,
struct sigaction* oldAction);
extern status_t _kern_sigaction(int sig, const struct sigaction *action,
struct sigaction *oldAction);
struct sigaction;
struct sigaction sa;
struct sigaction old_sa;
memset(&sa, 0, sizeof(struct sigaction));
if (sigaction(sig, NULL, &old_sa) == -1) {
sigaction(sig, &sa, NULL) == -1) {
struct sigaction action;
if (sigaction(SIGCHLD, &action, NULL) < 0) {
struct sigaction action;
if (sigaction(SIGHUP, &action, NULL) < 0
|| sigaction(SIGINT, &action, NULL) < 0
|| sigaction(SIGQUIT, &action, NULL) < 0) {
struct sigaction action;
if (sigaction(SIGHUP, &action, NULL) < 0
|| sigaction(SIGINT, &action, NULL) < 0
|| sigaction(SIGQUIT, &action, NULL) < 0) {
Syscall *sigaction = get_syscall("_kern_sigaction");
sigaction->GetParameter("sig")->SetHandler(new EnumTypeHandler(kSignalsMap));
struct sigaction sa;
(void)sigaction(SIGXFSZ, &sa, NULL);
(void)sigaction(SIGCHLD, &sa, NULL);
(void)sigaction(SIGCHLD, &sa, NULL);
(void)sigaction(SIGURG, &sa, NULL);
(void)sigaction(SIGHUP, &sa, NULL);
(void)sigaction(SIGINT, &sa, NULL);
(void)sigaction(SIGQUIT, &sa, NULL);
(void)sigaction(SIGTERM, &sa, NULL);
(void)sigaction(SIGPIPE, &sa, NULL);
struct sigaction si_sa;
if (sigaction(SIGINT, &si_sa, 0) == -1)
if (sigaction(SIGINFO, &si_sa, 0) == -1)
if (sigaction(SIGALRM, &si_sa, 0) == -1)
if (sigaction(SIGINT, &si_sa, 0) == -1)
if (sigaction(SIGINFO, &si_sa, 0) == -1)
if (sigaction(SIGALRM, &si_sa, 0) == -1)
sigaction(SIGINT, &si_sa, 0);
sigaction(SIGALRM, &si_sa, 0);
struct sigaction si_sa;
const struct sigaction& handlerInfo = info.Handler();
SignalInfo::SignalInfo(int signal, const struct sigaction& handler,
SignalInfo::SetTo(int signal, const struct sigaction& handler, bool deadly)
struct sigaction action;
sigaction(SIGUSR1, &action, NULL);
restore_old_sighup(int result, struct sigaction *action)
sigaction(SIGHUP, action, NULL);
struct sigaction oldAction, action;
oldActionResult = sigaction(SIGHUP, &action, &oldAction);
(void)sigaction(SIGALRM, &savealrm, NULL);
(void)sigaction(SIGHUP, &savehup, NULL);
(void)sigaction(SIGINT, &saveint, NULL);
(void)sigaction(SIGQUIT, &savequit, NULL);
(void)sigaction(SIGPIPE, &savepipe, NULL);
(void)sigaction(SIGTERM, &saveterm, NULL);
(void)sigaction(SIGTSTP, &savetstp, NULL);
(void)sigaction(SIGTTIN, &savettin, NULL);
(void)sigaction(SIGTTOU, &savettou, NULL);
struct sigaction sa, savealrm, saveint, savehup, savequit, saveterm;
struct sigaction savetstp, savettin, savettou, savepipe;
(void)sigaction(SIGALRM, &sa, &savealrm);
(void)sigaction(SIGHUP, &sa, &savehup);
(void)sigaction(SIGINT, &sa, &saveint);
(void)sigaction(SIGPIPE, &sa, &savepipe);
(void)sigaction(SIGQUIT, &sa, &savequit);
(void)sigaction(SIGTERM, &sa, &saveterm);
(void)sigaction(SIGTSTP, &sa, &savetstp);
(void)sigaction(SIGTTIN, &sa, &savettin);
(void)sigaction(SIGTTOU, &sa, &savettou);
WRAPPER_FUNCTION(int, sigaction, (int signal, const struct sigaction *action,
struct sigaction *oldAction),
struct sigaction* action, size_t spaceNeeded)
arch_setup_signal_frame(Thread *thread, struct sigaction *sa,
struct sigaction action;
if ((sigaction(signalNumber, NULL, &action) == 0
struct sigaction* action, size_t spaceNeeded)
arch_setup_signal_frame(Thread *thread, struct sigaction *sa,
arch_setup_signal_frame(Thread *thread, struct sigaction *sa,
arch_setup_signal_frame(Thread *thread, struct sigaction *sa,
struct sigaction action;
if ((sigaction(signalNumber, NULL, &action) == 0
struct sigaction* action, size_t spaceNeeded)
arch_setup_signal_frame(Thread *thread, struct sigaction *sa,
arch_setup_signal_frame(Thread *thread, struct sigaction *sa,
get_signal_stack(Thread* thread, struct iframe* frame, struct sigaction* action,
arch_setup_signal_frame(Thread* thread, struct sigaction* action,
get_signal_stack(Thread* thread, iframe* frame, struct sigaction* action,
arch_setup_signal_frame(Thread* thread, struct sigaction* action,
struct sigaction action;
if ((sigaction(signalNumber, NULL, &action) == 0
struct sigaction &handler = message.set_signal_handler.handler;
sigaction(signal, &handler, NULL);
if (sigaction(signal, NULL, &reply.get_signal_handler.handler)
struct sigaction signalAction;
if (sigaction(signal, NULL, &signalAction) == 0
user_debug_handle_signal(int signal, struct sigaction *handler, siginfo_t *info,
struct sigaction handler;
struct sigaction& parentHandler
sigaction_internal(int signal, const struct sigaction* act,
struct sigaction* oldAction)
struct sigaction& teamHandler = team->SignalActionFor(signal);
sigaction(int signal, const struct sigaction* act, struct sigaction* oldAction)
_user_sigaction(int signal, const struct sigaction *userAction,
struct sigaction *userOldAction)
struct sigaction act, oact;
|| user_memcpy(&act, userAction, sizeof(struct sigaction)) < B_OK))
|| user_memcpy(&oact, userOldAction, sizeof(struct sigaction))
&& user_memcpy(userOldAction, &oact, sizeof(struct sigaction)) < B_OK)
ExecuteSignalHandler(uint32 signal, struct sigaction* handler)
SigAction(uint32 signal, const struct sigaction* act)
struct sigaction fAction;
notify_debugger(Thread* thread, Signal* signal, struct sigaction& handler,
setup_signal_frame(Thread* thread, struct sigaction* action, Signal* signal,
struct sigaction& handler = team->SignalActionFor(SIGCHLD);
struct sigaction& action = SignalActionFor(i);
struct sigaction action;
if ((sigaction(SIGSEGV, NULL, &action) == 0
struct sigaction signalAction;
if (sigaction(SIGABRT, NULL, &signalAction) == 0
struct sigaction action;
sigaction(SIGSEGV, &action, NULL);
struct sigaction action;
struct sigaction oldAction;
__sigaction(int signal, const struct sigaction* action,
struct sigaction* oldAction)
struct sigaction ignoreSignalAction;
return sigaction(signal, &ignoreSignalAction, NULL);
struct sigaction action;
sigaction(signal, NULL, &action);
return sigaction(signal, &action, NULL);
struct sigaction newAction, oldAction;
struct sigaction newAction;
struct sigaction oldAction;
struct sigaction action;
&& sigaction(i, &action, NULL) != 0) {
struct sigaction signalAction;
if (sigaction(SIGABRT, NULL, &signalAction) == 0
struct sigaction intSave, quitSave, sa;
sigaction(SIGINT, &sa, &intSave);
sigaction(SIGQUIT, &sa, &quitSave);
sigaction(SIGINT, &intSave, NULL);
sigaction(SIGQUIT, &quitSave, NULL);
struct sigaction action;
sigaction(SIGUSR1, &action, NULL);
struct sigaction action = {};
if (sigaction(SIGFPE, &action, NULL) == -1) {
struct sigaction action;
sigaction(kSignals[i].signal, NULL, &action);
struct sigaction signalAction;
sigaction(SIGALRM, &signalAction, NULL);
struct sigaction action;
sigaction(SIGINT, &action, NULL);
struct sigaction act;
sigaction(SIGUSR1, &act, NULL);
sigaction(signalNumber, &action, &oldAction);
sigaction(signalNumber, &oldAction, NULL);
struct sigaction action;
struct sigaction oldAction;
sigaction(SIGALRM, &newAction, NULL);
struct sigaction newAction;
sigaction(SIGALRM, &newAction, NULL);
sigaction(SIGALRM, &newAction, NULL);
struct sigaction sa;
if (sigaction(SIGCHLD, &sa, NULL) == -1) {