summaryrefslogtreecommitdiff
path: root/src/sysdep.c
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1994-01-15 13:04:09 +0000
committerRichard M. Stallman <rms@gnu.org>1994-01-15 13:04:09 +0000
commit25ab68afb8ba0d34dd868208e4fe19ea4a2f8cc7 (patch)
treed8df996b8c9e978df38672e1baa5f878a5a28db2 /src/sysdep.c
parent815c1a208b8b0f854913d097483bf50e5b198232 (diff)
downloademacs-25ab68afb8ba0d34dd868208e4fe19ea4a2f8cc7.tar.gz
(request_sigio, unrequest_sigio): Add new versions of
these routines for the CX/UX operating system. (sys_signal) [SA_RESTART]: Set this flag.
Diffstat (limited to 'src/sysdep.c')
-rw-r--r--src/sysdep.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/sysdep.c b/src/sysdep.c
index 23376cb9bce..68d3d5463db 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -791,6 +791,32 @@ unrequest_sigio ()
#else /* not FASYNC, not STRIDE */
+#ifdef _CX_UX
+
+#include <termios.h>
+
+request_sigio ()
+{
+ int on = 1;
+ sigset_t st;
+
+ sigemptyset(&st);
+ sigaddset(&st, SIGIO);
+ ioctl (input_fd, FIOASYNC, &on);
+ interrupts_deferred = 0;
+ sigprocmask(SIG_UNBLOCK, &st, (sigset_t *)0);
+}
+
+unrequest_sigio ()
+{
+ int off = 0;
+
+ ioctl (input_fd, FIOASYNC, &off);
+ interrupts_deferred = 1;
+}
+
+#else /* ! _CX_UX */
+
request_sigio ()
{
croak ("request_sigio");
@@ -801,6 +827,7 @@ unrequest_sigio ()
croak ("unrequest_sigio");
}
+#endif /* _CX_UX */
#endif /* STRIDE */
#endif /* FASYNC */
#endif /* F_SETFL */
@@ -2337,7 +2364,14 @@ sys_signal (int signal_number, signal_handler_t action)
#else
sigemptyset (&new_action.sa_mask);
new_action.sa_handler = action;
+#ifdef SA_RESTART
+ /* Emacs mostly works better with restartable system services. If this
+ * flag exists, we probably want to turn it on here.
+ */
+ new_action.sa_flags = SA_RESTART;
+#else
new_action.sa_flags = 0;
+#endif
sigaction (signal_number, &new_action, &old_action);
return (old_action.sa_handler);
#endif /* DGUX */