From e172c89783326e2378e4793ff31a0f44210c5534 Mon Sep 17 00:00:00 2001 From: marha Date: Sat, 11 Sep 2010 08:41:00 +0000 Subject: xserver git update 11/9/2010 --- xorg-server/os/utils.c | 56 ++++++++++---------------------------------------- 1 file changed, 11 insertions(+), 45 deletions(-) (limited to 'xorg-server/os/utils.c') diff --git a/xorg-server/os/utils.c b/xorg-server/os/utils.c index a6ae27bda..179a4b089 100644 --- a/xorg-server/os/utils.c +++ b/xorg-server/os/utils.c @@ -527,6 +527,7 @@ void UseMsg(void) #endif ErrorF("-dumbSched Disable smart scheduling, enable old behavior\n"); ErrorF("-schedInterval int Set scheduler interval in msec\n"); + ErrorF("-sigstop Enable SIGSTOP based startup\n"); ErrorF("+extension name Enable extension\n"); ErrorF("-extension name Disable extension\n"); #ifdef XDMCP @@ -922,6 +923,10 @@ ProcessCommandLine(int argc, char *argv[]) else UseMsg (); } + else if ( strcmp( argv[i], "-sigstop") == 0) + { + RunFromSigStopParent = TRUE; + } else if ( strcmp( argv[i], "+extension") == 0) { if (++i < argc) @@ -1116,20 +1121,9 @@ XNFstrdup(const char *s) return ret; } - -#ifdef SIGVTALRM -#define SMART_SCHEDULE_POSSIBLE -#endif - -#ifdef SMART_SCHEDULE_POSSIBLE -#define SMART_SCHEDULE_SIGNAL SIGALRM -#define SMART_SCHEDULE_TIMER ITIMER_REAL -#endif - void SmartScheduleStopTimer (void) { -#ifdef SMART_SCHEDULE_POSSIBLE struct itimerval timer; if (SmartScheduleDisable) @@ -1139,13 +1133,11 @@ SmartScheduleStopTimer (void) timer.it_value.tv_sec = 0; timer.it_value.tv_usec = 0; (void) setitimer (ITIMER_REAL, &timer, 0); -#endif } void SmartScheduleStartTimer (void) { -#ifdef SMART_SCHEDULE_POSSIBLE struct itimerval timer; if (SmartScheduleDisable) @@ -1155,41 +1147,33 @@ SmartScheduleStartTimer (void) timer.it_value.tv_sec = 0; timer.it_value.tv_usec = SmartScheduleInterval * 1000; setitimer (ITIMER_REAL, &timer, 0); -#endif } -#ifdef SMART_SCHEDULE_POSSIBLE static void SmartScheduleTimer (int sig) { SmartScheduleTime += SmartScheduleInterval; } -#endif -Bool +void SmartScheduleInit (void) { -#ifdef SMART_SCHEDULE_POSSIBLE struct sigaction act; if (SmartScheduleDisable) - return TRUE; - + return; + memset((char *) &act, 0, sizeof(struct sigaction)); /* Set up the timer signal function */ act.sa_handler = SmartScheduleTimer; sigemptyset (&act.sa_mask); - sigaddset (&act.sa_mask, SMART_SCHEDULE_SIGNAL); - if (sigaction (SMART_SCHEDULE_SIGNAL, &act, 0) < 0) + sigaddset (&act.sa_mask, SIGALRM); + if (sigaction (SIGALRM, &act, 0) < 0) { perror ("sigaction for smart scheduler"); - return FALSE; + SmartScheduleDisable = TRUE; } - return TRUE; -#else - return FALSE; -#endif } #ifdef SIG_BLOCK @@ -1206,30 +1190,18 @@ OsBlockSignals (void) sigset_t set; sigemptyset (&set); -#ifdef SIGALRM sigaddset (&set, SIGALRM); -#endif -#ifdef SIGVTALRM sigaddset (&set, SIGVTALRM); -#endif #ifdef SIGWINCH sigaddset (&set, SIGWINCH); #endif #ifdef SIGIO sigaddset (&set, SIGIO); #endif -#ifdef SIGTSTP sigaddset (&set, SIGTSTP); -#endif -#ifdef SIGTTIN sigaddset (&set, SIGTTIN); -#endif -#ifdef SIGTTOU sigaddset (&set, SIGTTOU); -#endif -#ifdef SIGCHLD sigaddset (&set, SIGCHLD); -#endif sigprocmask (SIG_BLOCK, &set, &PreviousSignalMask); } #endif @@ -1275,21 +1247,17 @@ int System(char *command) { int pid, p; -#ifdef SIGCHLD void (*csig)(int); -#endif int status; if (!command) return 1; -#ifdef SIGCHLD csig = signal(SIGCHLD, SIG_DFL); if (csig == SIG_ERR) { perror("signal"); return -1; } -#endif #ifdef DEBUG ErrorF("System: `%s'\n", command); @@ -1312,12 +1280,10 @@ System(char *command) } -#ifdef SIGCHLD if (signal(SIGCHLD, csig) == SIG_ERR) { perror("signal"); return -1; } -#endif return p == -1 ? -1 : status; } -- cgit v1.2.3