diff --git a/hw/xfree86/os-support/shared/sigio.c b/hw/xfree86/os-support/shared/sigio.c index 45949f7a3..c746d02fc 100644 --- a/hw/xfree86/os-support/shared/sigio.c +++ b/hw/xfree86/os-support/shared/sigio.c @@ -178,7 +178,7 @@ xf86InstallSIGIOHandler(int fd, void (*f) (int, void *), void *closure) } sigemptyset(&sa.sa_mask); sigaddset(&sa.sa_mask, SIGIO); - sa.sa_flags = 0; + sa.sa_flags = SA_RESTART; sa.sa_handler = xf86SIGIO; sigaction(SIGIO, &sa, &osa); xf86SigIOFuncs[i].fd = fd; diff --git a/os/utils.c b/os/utils.c index 868eb043a..9b6fb3081 100644 --- a/os/utils.c +++ b/os/utils.c @@ -1255,6 +1255,7 @@ SmartScheduleInit(void) memset((char *) &act, 0, sizeof(struct sigaction)); /* Set up the timer signal function */ + act.sa_flags = SA_RESTART; act.sa_handler = SmartScheduleTimer; sigemptyset(&act.sa_mask); sigaddset(&act.sa_mask, SIGALRM);