varlink: add ManagedOOMMode enum type to io.systemd.oom
Convert the mode field in ControlGroup from plain string to the ManagedOOMMode enum type from varlink-idl-common. Register ManagedOOMMode in both io.systemd.oom and io.systemd.ManagedOOM interfaces since both use the ControlGroup struct. Co-developed-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
+2
-1
@@ -4,6 +4,7 @@
|
||||
|
||||
#include "constants.h"
|
||||
#include "errno-util.h"
|
||||
#include "json-util.h"
|
||||
#include "manager.h"
|
||||
#include "metrics.h"
|
||||
#include "path-util.h"
|
||||
@@ -62,7 +63,7 @@ static int build_managed_oom_json_array_element(Unit *u, const char *property, s
|
||||
return -EINVAL;
|
||||
|
||||
return sd_json_buildo(ret_v,
|
||||
SD_JSON_BUILD_PAIR_STRING("mode", mode),
|
||||
JSON_BUILD_PAIR_ENUM("mode", mode),
|
||||
SD_JSON_BUILD_PAIR_STRING("path", crt->cgroup_path),
|
||||
SD_JSON_BUILD_PAIR_STRING("property", property),
|
||||
SD_JSON_BUILD_PAIR_CONDITION(use_limit, "limit", SD_JSON_BUILD_UNSIGNED(c->moom_mem_pressure_limit)),
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
|
||||
#include "varlink-idl-common.h"
|
||||
#include "varlink-io.systemd.ManagedOOM.h"
|
||||
|
||||
/* Pull in vl_type_ControlGroup, since both interfaces need it */
|
||||
@@ -19,6 +20,7 @@ static SD_VARLINK_DEFINE_ERROR(SubscriptionTaken);
|
||||
SD_VARLINK_DEFINE_INTERFACE(
|
||||
io_systemd_ManagedOOM,
|
||||
"io.systemd.ManagedOOM",
|
||||
&vl_type_ManagedOOMMode,
|
||||
&vl_method_SubscribeManagedOOMCGroups,
|
||||
&vl_type_ControlGroup,
|
||||
&vl_error_SubscriptionTaken);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
|
||||
#include "varlink-idl-common.h"
|
||||
#include "varlink-io.systemd.oom.h"
|
||||
|
||||
/* This is oomd's Varlink service, where oomd is server and systemd --user is the client.
|
||||
@@ -9,7 +10,7 @@
|
||||
|
||||
SD_VARLINK_DEFINE_STRUCT_TYPE(
|
||||
ControlGroup,
|
||||
SD_VARLINK_DEFINE_FIELD(mode, SD_VARLINK_STRING, 0),
|
||||
SD_VARLINK_DEFINE_FIELD_BY_TYPE(mode, ManagedOOMMode, 0),
|
||||
SD_VARLINK_DEFINE_FIELD(path, SD_VARLINK_STRING, 0),
|
||||
SD_VARLINK_DEFINE_FIELD(property, SD_VARLINK_STRING, 0),
|
||||
SD_VARLINK_DEFINE_FIELD(limit, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
|
||||
@@ -22,5 +23,6 @@ static SD_VARLINK_DEFINE_METHOD(
|
||||
SD_VARLINK_DEFINE_INTERFACE(
|
||||
io_systemd_oom,
|
||||
"io.systemd.oom",
|
||||
&vl_type_ManagedOOMMode,
|
||||
&vl_method_ReportManagedOOMCGroups,
|
||||
&vl_type_ControlGroup);
|
||||
|
||||
Reference in New Issue
Block a user