xserver-multidpi/hw/xfree86/os-support/linux
Aaron Plattner 88c4622b59 linux: Retry VT ioctls while errno == EINTR
When the smart scheduler is enabled, the VT ioctls (particularly
VT_WAITACTIVE) can be interrupted by the smart scheduler's SIGALRMs.
Previously, this caused the server to immediately continue on to
ScreenInit, almost certainly causing a crash or failure because the X
server that owned the VT hadn't finished cleaning up.  As of commit
7ee965a300, it causes a FatalError
instead.

Retrying the ioctl as long as it fails with errno == EINTR fixes the
problem and allows server regenerations to trigger VT switches that
actually succeed.

Signed-off-by: Aaron Plattner <aplattner@nvidia.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Cyril Brulebois <kibi@debian.org>
Signed-off-by: Keith Packard <keithp@keithp.com>
2011-04-22 11:14:43 -07:00
..
int10 Replace X-allocation functions with their C89 counterparts 2010-05-13 00:22:37 +07:00
lnx_acpi.c xfree86: Remove superfluous ifdef DEBUG checks. 2009-05-16 12:20:57 +10:00
lnx_agp.c linux: warning fix 2010-12-31 12:52:50 +00:00
lnx_apm.c Remove lnx_font.c and lnx.h 2009-11-06 06:23:26 -08:00
lnx_axp.c Use glibc's in/out routines 2009-11-16 20:17:29 -08:00
lnx_bell.c Rework symbol visibility for easier maintenance 2008-12-03 05:43:34 -02:00
lnx_ev56.c Use glibc's in/out routines 2009-11-16 20:17:29 -08:00
lnx_init.c linux: Retry VT ioctls while errno == EINTR 2011-04-22 11:14:43 -07:00
lnx_kmod.c Rework symbol visibility for easier maintenance 2008-12-03 05:43:34 -02:00
lnx_video.c XFree86: Linux: AGP: Fix void-pointer-arithmetic warning 2010-12-31 12:52:51 +00:00
Makefile.am Remove lnx_font.c and lnx.h 2009-11-06 06:23:26 -08:00