]> arthur.barton.de Git - netdata.git/blobdiff - src/daemon.c
allow users to configure netdata oom score
[netdata.git] / src / daemon.c
index c63634f060d5b8b09b76bac6fe698c0fe6acc7c6..c125511a07d57571eb939ca6a341e50bfd301d21 100644 (file)
@@ -117,12 +117,20 @@ int become_user(const char *username, int pid_fd)
         ngroups = 0;
     }
 
+#ifdef __APPLE__
+    if(setregid(gid, gid) != 0) {
+#else
     if(setresgid(gid, gid, gid) != 0) {
+#endif /* __APPLE__ */
         error("Cannot switch to user's %s group (gid: %u).", username, gid);
         return -1;
     }
 
+#ifdef __APPLE__
+    if(setreuid(uid, uid) != 0) {
+#else
     if(setresuid(uid, uid, uid) != 0) {
+#endif /* __APPLE__ */
         error("Cannot switch to user %s (uid: %u).", username, uid);
         return -1;
     }
@@ -181,7 +189,7 @@ int sched_setscheduler_idle(void) {
 #endif
 }
 
-int become_daemon(int dont_fork, const char *user)
+int become_daemon(int dont_fork, const char *user, int oom_score)
 {
     if(!dont_fork) {
         int i = fork();
@@ -231,7 +239,7 @@ int become_daemon(int dont_fork, const char *user)
     umask(0007);
 
     // adjust my Out-Of-Memory score
-    oom_score_adj(1000);
+    oom_score_adj(oom_score);
 
     // never become a problem
     if(sched_setscheduler_idle() != 0) {