summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2019-03-22 11:25:49 +0100
committerLennart Poettering <lennart@poettering.net>2019-04-12 14:25:44 +0200
commit9b2559a13e5b8ccdf3b429f3c7e82159e2a733b5 (patch)
treec49c9b1111c437c31d74d21e3feb41a0598caba4
parentcc6625212f4a2cf41e2fe2cbe64ea71152a377b8 (diff)
downloadsystemd-9b2559a13e5b8ccdf3b429f3c7e82159e2a733b5.tar.gz
core: add new call unit_reset_accounting()
It's a simple wrapper for resetting both IP and CPU accounting in one go. This will become particularly useful when we also needs this to reset IO accounting (to be added in a later commit).
-rw-r--r--src/core/cgroup.c11
-rw-r--r--src/core/cgroup.h1
-rw-r--r--src/core/scope.c3
-rw-r--r--src/core/slice.c3
-rw-r--r--src/core/unit.c3
5 files changed, 15 insertions, 6 deletions
diff --git a/src/core/cgroup.c b/src/core/cgroup.c
index 88acb593cd..5bf6224e31 100644
--- a/src/core/cgroup.c
+++ b/src/core/cgroup.c
@@ -3210,6 +3210,17 @@ int unit_reset_ip_accounting(Unit *u) {
return r < 0 ? r : q;
}
+int unit_reset_accounting(Unit *u) {
+ int r, q;
+
+ assert(u);
+
+ r = unit_reset_cpu_accounting(u);
+ q = unit_reset_ip_accounting(u);
+
+ return r < 0 ? r : q;
+}
+
void unit_invalidate_cgroup(Unit *u, CGroupMask m) {
assert(u);
diff --git a/src/core/cgroup.h b/src/core/cgroup.h
index 050b963579..bfb2fa0a53 100644
--- a/src/core/cgroup.h
+++ b/src/core/cgroup.h
@@ -204,6 +204,7 @@ int unit_get_ip_accounting(Unit *u, CGroupIPAccountingMetric metric, uint64_t *r
int unit_reset_cpu_accounting(Unit *u);
int unit_reset_ip_accounting(Unit *u);
+int unit_reset_accounting(Unit *u);
#define UNIT_CGROUP_BOOL(u, name) \
({ \
diff --git a/src/core/scope.c b/src/core/scope.c
index 7f83052258..bb1e60dd11 100644
--- a/src/core/scope.c
+++ b/src/core/scope.c
@@ -330,8 +330,7 @@ static int scope_start(Unit *u) {
return r;
(void) unit_realize_cgroup(u);
- (void) unit_reset_cpu_accounting(u);
- (void) unit_reset_ip_accounting(u);
+ (void) unit_reset_accounting(u);
unit_export_state_files(u);
diff --git a/src/core/slice.c b/src/core/slice.c
index 15b18bcad3..489d5ace6a 100644
--- a/src/core/slice.c
+++ b/src/core/slice.c
@@ -230,8 +230,7 @@ static int slice_start(Unit *u) {
return r;
(void) unit_realize_cgroup(u);
- (void) unit_reset_cpu_accounting(u);
- (void) unit_reset_ip_accounting(u);
+ (void) unit_reset_accounting(u);
slice_set_state(t, SLICE_ACTIVE);
return 1;
diff --git a/src/core/unit.c b/src/core/unit.c
index 9dbfdb43d5..99b7acbef1 100644
--- a/src/core/unit.c
+++ b/src/core/unit.c
@@ -5393,8 +5393,7 @@ int unit_prepare_exec(Unit *u) {
(void) unit_realize_cgroup(u);
if (u->reset_accounting) {
- (void) unit_reset_cpu_accounting(u);
- (void) unit_reset_ip_accounting(u);
+ (void) unit_reset_accounting(u);
u->reset_accounting = false;
}