summaryrefslogtreecommitdiffstats
path: root/src/shared/varlink-io.systemd.oom.c
blob: 67beb6b7805617c2d893483e67131aab1c776e73 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/* SPDX-License-Identifier: LGPL-2.1-or-later */

#include "varlink-io.systemd.oom.h"

/* This is oomd's Varlink service, where oomd is server and systemd --user is the client.
 *
 * Compare with io.systemd.ManagedOOM where the client/server roles of the service manager and oomd are
 * swapped! */

SD_VARLINK_DEFINE_STRUCT_TYPE(
                ControlGroup,
                SD_VARLINK_DEFINE_FIELD(mode, SD_VARLINK_STRING, 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));

static SD_VARLINK_DEFINE_METHOD(
                ReportManagedOOMCGroups,
                SD_VARLINK_DEFINE_INPUT_BY_TYPE(cgroups, ControlGroup, SD_VARLINK_ARRAY));

SD_VARLINK_DEFINE_INTERFACE(
                io_systemd_oom,
                "io.systemd.oom",
                &vl_method_ReportManagedOOMCGroups,
                &vl_type_ControlGroup);