summaryrefslogtreecommitdiffstats
path: root/daemon/daemon.c
diff options
context:
space:
mode:
Diffstat (limited to 'daemon/daemon.c')
-rw-r--r--daemon/daemon.c30
1 files changed, 14 insertions, 16 deletions
diff --git a/daemon/daemon.c b/daemon/daemon.c
index 68e161a3..2b8a6552 100644
--- a/daemon/daemon.c
+++ b/daemon/daemon.c
@@ -102,7 +102,11 @@ int become_user(const char *username, int pid_fd) {
gid_t *supplementary_groups = NULL;
if(ngroups > 0) {
supplementary_groups = mallocz(sizeof(gid_t) * ngroups);
+#ifdef __APPLE__
+ if(getgrouplist(username, gid, (int *)supplementary_groups, &ngroups) == -1) {
+#else
if(getgrouplist(username, gid, supplementary_groups, &ngroups) == -1) {
+#endif /* __APPLE__ */
if(am_i_root)
error("Cannot get supplementary groups of user '%s'.", username);
@@ -173,7 +177,7 @@ int become_user(const char *username, int pid_fd) {
static void oom_score_adj(void) {
char buf[30 + 1];
- long long int old_score, wanted_score = OOM_SCORE_ADJ_MAX, final_score = 0;
+ long long int old_score, wanted_score = 0, final_score = 0;
// read the existing score
if(read_single_signed_number_file("/proc/self/oom_score_adj", &old_score)) {
@@ -271,8 +275,8 @@ struct sched_def {
// the available members are important too!
// these are all the possible scheduling policies supported by netdata
-#ifdef SCHED_IDLE
- { "idle", SCHED_IDLE, 0, SCHED_FLAG_NONE },
+#ifdef SCHED_BATCH
+ { "batch", SCHED_BATCH, 0, SCHED_FLAG_USE_NICE },
#endif
#ifdef SCHED_OTHER
@@ -280,6 +284,10 @@ struct sched_def {
{ "nice", SCHED_OTHER, 0, SCHED_FLAG_USE_NICE },
#endif
+#ifdef SCHED_IDLE
+ { "idle", SCHED_IDLE, 0, SCHED_FLAG_NONE },
+#endif
+
#ifdef SCHED_RR
{ "rr", SCHED_RR, 0, SCHED_FLAG_PRIORITY_CONFIGURABLE },
#endif
@@ -288,10 +296,6 @@ struct sched_def {
{ "fifo", SCHED_FIFO, 0, SCHED_FLAG_PRIORITY_CONFIGURABLE },
#endif
-#ifdef SCHED_BATCH
- { "batch", SCHED_BATCH, 0, SCHED_FLAG_USE_NICE },
-#endif
-
// do not change the scheduling priority
{ "keep", 0, 0, SCHED_FLAG_KEEP_AS_IS },
{ "none", 0, 0, SCHED_FLAG_KEEP_AS_IS },
@@ -339,13 +343,7 @@ static void sched_getscheduler_report(void) {
}
}
}
-#else // !HAVE_SCHED_GETSCHEDULER
-static void sched_getscheduler_report(void) {
-#ifdef HAVE_GETPRIORITY
- info("Running with priority %d", getpriority(PRIO_PROCESS, 0));
-#endif // HAVE_GETPRIORITY
-}
-#endif // !HAVE_SCHED_GETSCHEDULER
+#endif /* HAVE_SCHED_GETSCHEDULER */
#ifdef HAVE_SCHED_SETSCHEDULER
@@ -418,11 +416,11 @@ fallback:
report:
sched_getscheduler_report();
}
-#else // !HAVE_SCHED_SETSCHEDULER
+#else /* HAVE_SCHED_SETSCHEDULER */
static void sched_setscheduler_set(void) {
process_nice_level();
}
-#endif // !HAVE_SCHED_SETSCHEDULER
+#endif /* HAVE_SCHED_SETSCHEDULER */
int become_daemon(int dont_fork, const char *user)
{