* signal.cc (signal): Don't set SA_RESTART here.
(siginterrupt): White space. * sigproc.cc (sigalloc): Set SA_RESTART here, on initialization.
This commit is contained in:
parent
76ef40d69f
commit
70fde4154f
@ -1,3 +1,9 @@
|
|||||||
|
2006-03-21 Christopher Faylor <cgf@timesys.com>
|
||||||
|
|
||||||
|
* signal.cc (signal): Don't set SA_RESTART here.
|
||||||
|
(siginterrupt): White space.
|
||||||
|
* sigproc.cc (sigalloc): Set SA_RESTART here, on initialization.
|
||||||
|
|
||||||
2006-03-21 Christopher Faylor <cgf@timesys.com>
|
2006-03-21 Christopher Faylor <cgf@timesys.com>
|
||||||
|
|
||||||
* child_info.h (child_status): Fix typo which made it impossible to set
|
* child_info.h (child_status): Fix typo which made it impossible to set
|
||||||
|
@ -64,10 +64,7 @@ signal (int sig, _sig_func_ptr func)
|
|||||||
prev = global_sigs[sig].sa_handler;
|
prev = global_sigs[sig].sa_handler;
|
||||||
global_sigs[sig].sa_handler = func;
|
global_sigs[sig].sa_handler = func;
|
||||||
global_sigs[sig].sa_mask = 0;
|
global_sigs[sig].sa_mask = 0;
|
||||||
/* SA_RESTART is set to maintain BSD compatible signal behaviour by default.
|
global_sigs[sig].sa_flags &= ~SA_SIGINFO;
|
||||||
This is also compatible with the behaviour of signal(2) in Linux. */
|
|
||||||
global_sigs[sig].sa_flags |= SA_RESTART;
|
|
||||||
global_sigs[sig].sa_flags &= ~ SA_SIGINFO;
|
|
||||||
set_sigcatchers (prev, func);
|
set_sigcatchers (prev, func);
|
||||||
|
|
||||||
syscall_printf ("%p = signal (%d, %p)", prev, sig, func);
|
syscall_printf ("%p = signal (%d, %p)", prev, sig, func);
|
||||||
@ -470,7 +467,7 @@ extern "C" int
|
|||||||
siginterrupt (int sig, int flag)
|
siginterrupt (int sig, int flag)
|
||||||
{
|
{
|
||||||
struct sigaction act;
|
struct sigaction act;
|
||||||
sigaction(sig, NULL, &act);
|
sigaction (sig, NULL, &act);
|
||||||
if (flag)
|
if (flag)
|
||||||
act.sa_flags &= ~SA_RESTART;
|
act.sa_flags &= ~SA_RESTART;
|
||||||
else
|
else
|
||||||
|
@ -113,6 +113,10 @@ sigalloc ()
|
|||||||
cygheap->sigs = global_sigs =
|
cygheap->sigs = global_sigs =
|
||||||
(struct sigaction *) ccalloc (HEAP_SIGS, NSIG, sizeof (struct sigaction));
|
(struct sigaction *) ccalloc (HEAP_SIGS, NSIG, sizeof (struct sigaction));
|
||||||
global_sigs[SIGSTOP].sa_flags = SA_RESTART | SA_NODEFER;
|
global_sigs[SIGSTOP].sa_flags = SA_RESTART | SA_NODEFER;
|
||||||
|
for (int i = 0; i < NSIG; i++)
|
||||||
|
/* SA_RESTART is set to maintain BSD compatible signal behaviour by default.
|
||||||
|
This is also compatible with the behaviour of signal(2) in Linux. */
|
||||||
|
global_sigs[i].sa_flags = SA_RESTART;
|
||||||
}
|
}
|
||||||
|
|
||||||
void __stdcall
|
void __stdcall
|
||||||
|
Loading…
x
Reference in New Issue
Block a user