From: Timo Sirainen Date: Mon, 15 Mar 2021 15:22:00 +0000 (+0200) Subject: lib: cpu-limit - Split off cpu_limit_get_usage_msecs_with() X-Git-Tag: 2.3.15~215 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=db70cd7091b9b39f831b71556d5c7b184760e1df;p=thirdparty%2Fdovecot%2Fcore.git lib: cpu-limit - Split off cpu_limit_get_usage_msecs_with() --- diff --git a/src/lib/cpu-limit.c b/src/lib/cpu-limit.c index 88d5189a82..2ad35a2357 100644 --- a/src/lib/cpu-limit.c +++ b/src/lib/cpu-limit.c @@ -38,20 +38,18 @@ cpu_limit_handler(const siginfo_t *si ATTR_UNUSED, void *context ATTR_UNUSED) } } -unsigned int -cpu_limit_get_usage_msecs(struct cpu_limit *climit, enum cpu_limit_type type) +static unsigned int +cpu_limit_get_usage_msecs_with(struct cpu_limit *climit, + enum cpu_limit_type type, + const struct rusage *rusage) { - struct rusage rusage; struct timeval cpu_usage = { 0, 0 }; int usage_diff; - /* Query cpu usage so far */ - if (getrusage(RUSAGE_SELF, &rusage) < 0) - i_fatal("getrusage() failed: %m"); if ((type & CPU_LIMIT_TYPE_USER) != 0) - timeval_add(&cpu_usage, &rusage.ru_utime); + timeval_add(&cpu_usage, &rusage->ru_utime); if ((type & CPU_LIMIT_TYPE_SYSTEM) != 0) - timeval_add(&cpu_usage, &rusage.ru_stime); + timeval_add(&cpu_usage, &rusage->ru_stime); struct timeval initial_total = { 0, 0 }; if ((type & CPU_LIMIT_TYPE_USER) != 0) @@ -64,6 +62,18 @@ cpu_limit_get_usage_msecs(struct cpu_limit *climit, enum cpu_limit_type type) return (unsigned int)usage_diff; } +unsigned int +cpu_limit_get_usage_msecs(struct cpu_limit *climit, enum cpu_limit_type type) +{ + struct rusage rusage; + + /* Query cpu usage so far */ + if (getrusage(RUSAGE_SELF, &rusage) < 0) + i_fatal("getrusage() failed: %m"); + + return cpu_limit_get_usage_msecs_with(climit, type, &rusage); +} + #undef cpu_limit_init struct cpu_limit * cpu_limit_init(unsigned int cpu_limit_sec,