[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.