Skip to content
Snippets Groups Projects
Commit 7359ad28 authored by Per Cederqvist's avatar Per Cederqvist Committed by Magnus Holmgren
Browse files

(use_sa_restart): New static variable.

(sig_on_signal): Add SA_RESTART if appropriate.
(oop_signal_new): Don't just blindly set FD_CLOEXEC and
	O_NONBLOCK.  Read the old settings first.
(oop_signal_use_sa_restart): New function.

Signed-off-by: default avatarMagnus Holmgren <magnus@kibibyte.se>
parent 1c2f100d
Branches from-lyskom
No related tags found
No related merge requests found
......@@ -120,4 +120,5 @@ oop_adapter_signal *oop_signal_new(oop_source *);
void oop_signal_delete(oop_adapter_signal *);
oop_source *oop_signal_source(oop_adapter_signal *);
void oop_signal_use_sa_restart(void);
#endif
......@@ -35,6 +35,7 @@ struct oop_adapter_signal {
};
static struct oop_adapter_signal *sig_owner[OOP_NUM_SIGNALS];
static int use_sa_restart = 0;
static oop_adapter_signal *verify_source(oop_source *source) {
oop_adapter_signal * const s = (oop_adapter_signal *) source;
......@@ -137,6 +138,7 @@ static void sig_on_signal(oop_source *source,int sig,
#ifdef SA_NODEFER
act.sa_flags &= ~SA_NODEFER;
#endif
if (use_sa_restart) act.sa_flags |= SA_RESTART;
sigaction(sig,&act,NULL);
}
}
......@@ -220,3 +222,10 @@ void oop_signal_delete(oop_adapter_signal *s) {
oop_source *oop_signal_source(oop_adapter_signal *s) {
return &s->oop;
}
void oop_signal_use_sa_restart(void) {
int i;
for (i = 0; i < OOP_NUM_SIGNALS; ++i)
assert(NULL == sig_owner[i] && "signal handler already registered");
use_sa_restart = 1;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment