SilcUnixScheduler internal = (SilcUnixScheduler)context;
int i;
+ sigprocmask(SIG_BLOCK, &internal->signals, &internal->signals_blocked);
+
for (i = 0; i < SIGNAL_COUNT; i++) {
if (!internal->signal_call[i].signal) {
internal->signal_call[i].signal = signal;
internal->signal_call[i].callback = callback;
internal->signal_call[i].context = callback_context;
internal->signal_call[i].call = FALSE;
+ break;
}
}
+ sigprocmask(SIG_SETMASK, &internal->signals_blocked, NULL);
sigaddset(&internal->signals, signal);
}
SilcUnixScheduler internal = (SilcUnixScheduler)context;
int i;
+ sigprocmask(SIG_BLOCK, &internal->signals, &internal->signals_blocked);
+
for (i = 0; i < SIGNAL_COUNT; i++) {
if (internal->signal_call[i].signal == signal &&
internal->signal_call[i].callback == callback &&
}
}
+ sigprocmask(SIG_SETMASK, &internal->signals_blocked, NULL);
sigdelset(&internal->signals, signal);
}
SilcUnixScheduler internal = (SilcUnixScheduler)context;
int i;
+ sigprocmask(SIG_BLOCK, &internal->signals, &internal->signals_blocked);
+
for (i = 0; i < SIGNAL_COUNT; i++) {
if (internal->signal_call[i].signal == signal)
internal->signal_call[i].call = TRUE;
}
+
+ sigprocmask(SIG_SETMASK, &internal->signals_blocked, NULL);
}
/* Call all signals */
SilcUnixScheduler internal = (SilcUnixScheduler)context;
int i;
+ sigprocmask(SIG_BLOCK, &internal->signals, &internal->signals_blocked);
+
for (i = 0; i < SIGNAL_COUNT; i++) {
if (internal->signal_call[i].call &&
internal->signal_call[i].callback) {
internal->signal_call[i].call = FALSE;
}
}
+
+ sigprocmask(SIG_SETMASK, &internal->signals_blocked, NULL);
}
/* Block registered signals in scheduler. */