Merge pull request #100 from C4K3/scheduler-timing
authorFelix Morgner <felix.morgner@gmail.com>
Thu, 26 Jan 2017 11:30:42 +0000 (12:30 +0100)
committerGitHub <noreply@github.com>
Thu, 26 Jan 2017 11:30:42 +0000 (12:30 +0100)
Set scheduling policy before dropping privileges

src/main.c

index a18363dd721bc579bdbcd842e295d4c8b0223132..bc913395f8b56e784709aac25ed9839ca1820f73 100644 (file)
@@ -323,6 +323,13 @@ int main(int argc, char **argv)
                        if (pidfile != NULL)
                                lockfile(pidfile);
 
+#ifdef POSIX_PRIORITY_SCHEDULING
+                       /* Set the scheduling policy, has to be called after daemonizing
+                        * but before we drop privileges */
+                       if (realtime)
+                               setscheduler();
+#endif
+
                        switch_user();
 
                        /* Reopen log file. If user switch results in access denied, we catch
@@ -332,6 +339,15 @@ int main(int argc, char **argv)
                }
                else Log_init(true);
 
+#ifdef POSIX_PRIORITY_SCHEDULING
+               /* We still want to set scheduling policy if nodaemon is specified,
+                * but if we are daemonizing setscheduler() will be called above */
+               if (nodaemon) {
+                       if (realtime)
+                               setscheduler();
+               }
+#endif
+
                signal(SIGCHLD, SIG_IGN); /* ignore child */
                signal(SIGTSTP, SIG_IGN); /* ignore tty signals */
                signal(SIGTTOU, SIG_IGN);
@@ -360,11 +376,6 @@ int main(int argc, char **argv)
     Sharedmemory_init( bindport, bindport6 );
 #endif
 
-#ifdef POSIX_PRIORITY_SCHEDULING
-               if (realtime)
-                       setscheduler();
-#endif
-
                Server_run();
 
 #ifdef USE_SHAREDMEMORY_API