[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[MiNT] sigaction() and SA_RESTART / SA_INTERRUPT
Is there any way to SA_RESTART or SA_INTERRUPT in sa_flags
for sigaction() under mint? Ther are the two ways to
determine whether system calls should be restarted after
a signal?
For reference the definition of SA_RESTART is:
SA_RESTART Normally, if a signal is caught during the system calls
listed below, the call may be forced to terminate with the
error EINTR, the call may return with a data transfer
shorter than requested, or the call may be restarted.
Restarting of pending calls is requested by setting the
SA_RESTART bit in sa_flags. The affected system calls
include open(2), read(2), write(2), sendto(2),
recvfrom(2), sendmsg(2) and recvmsg(2) on a communications
channel or a slow device (such as a terminal, but not a
regular file) and during a wait(2) or ioctl(2). However,
calls that have already committed are not restarted, but
instead return a partial success (for example, a short
read count).
After a fork(2) or vfork(2) all signals, the signal mask,
the signal stack, and the restart/interrupt flags are
inherited by the child.
The execve(2) system call reinstates the default action
for all signals which were caught and resets all signals
to be caught on the user stack. Ignored signals remain
ignored; the signal mask remains the same; signals that
restart pending system calls continue to do so.