diff options
-rw-r--r-- | coreupdown.c | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/coreupdown.c b/coreupdown.c index 70015ec..ab3d4e9 100644 --- a/coreupdown.c +++ b/coreupdown.c @@ -242,8 +242,22 @@ daemon_main(int argc, char **argv, int orig_argc, char **orig_argv, int reexeced size_t cpus; int up_time = 0, down_time = 0, cooldown = 0, err; struct timespec interval, rem; + uintmax_t coreup_threshold_cpu, coredown_threshold_cpu; + int coreup_threshold_time, coredown_threshold_time; + int coreup_cooldown, coredown_cooldown; + time_t daemon_interval_sec; + long int daemon_interval_nsec; restart: + coreup_threshold_cpu = COREUP_THRESHOLD_CPU; + coreup_threshold_time = COREUP_THRESHOLD_TIME; + coreup_cooldown = COREUP_COOLDOWN; + coredown_threshold_cpu = COREDOWN_THRESHOLD_CPU; + coredown_threshold_time = COREDOWN_THRESHOLD_TIME; + coredown_cooldown = COREDOWN_COOLDOWN; + daemon_interval_sec = DAEMON_INTERVAL_SEC; + daemon_interval_nsec = DAEMON_INTERVAL_NSEC; + if (reexeced) argv[0] = "coreupdownd"; @@ -266,8 +280,8 @@ restart: if (signal(SIGHUP, sighup_handler) == SIG_ERR) fprintf(stderr, "%s: signal SIGHUP <function>: %s\n", argv0, strerror(errno)); - interval.tv_sec = DAEMON_INTERVAL_SEC; - interval.tv_nsec = DAEMON_INTERVAL_NSEC; + interval.tv_sec = daemon_interval_sec; + interval.tv_nsec = daemon_interval_nsec; if (getusage(&total, &idle, &cpus)) return 1; @@ -303,17 +317,17 @@ restart: continue; } - if (cpus == 1 && 100 * (total - idle) > COREUP_THRESHOLD_CPU * total) { + if (cpus == 1 && 100 * (total - idle) > coreup_threshold_cpu * total) { down_time = 0; - if (up_time++ >= COREUP_THRESHOLD_TIME) { - cooldown = COREUP_COOLDOWN; + if (up_time++ >= coreup_threshold_time) { + cooldown = coreup_cooldown; coreup(); up_time = 0; } - } else if (cpus > 1 && 100 * (total - idle) < COREDOWN_THRESHOLD_CPU * total * cpus) { + } else if (cpus > 1 && 100 * (total - idle) < coredown_threshold_cpu * total * cpus) { up_time = 0; - if (down_time++ >= COREDOWN_THRESHOLD_TIME) { - cooldown = COREDOWN_COOLDOWN; + if (down_time++ >= coredown_threshold_time) { + cooldown = coredown_cooldown; coredown(); down_time = 0; } |