]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: cpu-limit - Move cpu_limit_get_usage_msecs()
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 15 Mar 2021 15:21:03 +0000 (17:21 +0200)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Tue, 16 Mar 2021 10:04:53 +0000 (10:04 +0000)
src/lib/cpu-limit.c

index 76d01b70183ed62601a9e70bce42f1d383f7458a..88d5189a8296546d4b65da9f6def283db983fcc1 100644 (file)
@@ -38,6 +38,32 @@ 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)
+{
+       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);
+       if ((type & CPU_LIMIT_TYPE_SYSTEM) != 0)
+               timeval_add(&cpu_usage, &rusage.ru_stime);
+
+       struct timeval initial_total = { 0, 0 };
+       if ((type & CPU_LIMIT_TYPE_USER) != 0)
+               timeval_add(&initial_total, &climit->initial_usage.ru_utime);
+       if ((type & CPU_LIMIT_TYPE_SYSTEM) != 0)
+               timeval_add(&initial_total, &climit->initial_usage.ru_stime);
+       usage_diff = timeval_diff_msecs(&cpu_usage, &initial_total);
+       i_assert(usage_diff >= 0);
+
+       return (unsigned int)usage_diff;
+}
+
 #undef cpu_limit_init
 struct cpu_limit *
 cpu_limit_init(unsigned int cpu_limit_sec,
@@ -111,32 +137,6 @@ cpu_limit_init(unsigned int cpu_limit_sec,
        return climit;
 }
 
-unsigned int
-cpu_limit_get_usage_msecs(struct cpu_limit *climit, enum cpu_limit_type type)
-{
-       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);
-       if ((type & CPU_LIMIT_TYPE_SYSTEM) != 0)
-               timeval_add(&cpu_usage, &rusage.ru_stime);
-
-       struct timeval initial_total = { 0, 0 };
-       if ((type & CPU_LIMIT_TYPE_USER) != 0)
-               timeval_add(&initial_total, &climit->initial_usage.ru_utime);
-       if ((type & CPU_LIMIT_TYPE_SYSTEM) != 0)
-               timeval_add(&initial_total, &climit->initial_usage.ru_stime);
-       usage_diff = timeval_diff_msecs(&cpu_usage, &initial_total);
-       i_assert(usage_diff >= 0);
-
-       return (unsigned int)usage_diff;
-}
-
 void cpu_limit_deinit(struct cpu_limit **_climit)
 {
        struct cpu_limit *climit = *_climit;