}
}
+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,
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;