Introduce a counter that tracks how many configuration reloads have been successfully completed by the manager. The increment lives in manager_reload() right after the "point of no return", so failed reload attempts that bail out earlier (e.g. during serialization) do not bump the counter. It is accessible as a new ReloadCount property to org.freedesktop.systemd1.Manager (D-Bus) and ReloadCount to io.systemd.Manager.Describe (Varlink). Also add an integration test for ReloadCount that verifies that the new ReloadCount property increments by one per daemon-reload, accumulates correctly across multiple reloads, and that D-Bus and Varlink return identical values. Also tests that the counter reset after a reexec. Co-developed-by: Claude Opus 4.7 <noreply@anthropic.com> Signed-off-by: Simon Lucido <simonlucido@meta.com>
270 lines
22 KiB
C
270 lines
22 KiB
C
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
|
|
|
#include "varlink-idl-common.h"
|
|
#include "varlink-io.systemd.Manager.h"
|
|
|
|
SD_VARLINK_DEFINE_ENUM_TYPE(
|
|
LogTarget,
|
|
SD_VARLINK_DEFINE_ENUM_VALUE(console),
|
|
SD_VARLINK_DEFINE_ENUM_VALUE(kmsg),
|
|
SD_VARLINK_DEFINE_ENUM_VALUE(journal),
|
|
SD_VARLINK_DEFINE_ENUM_VALUE(syslog),
|
|
SD_VARLINK_DEFINE_ENUM_VALUE(console_prefixed),
|
|
SD_VARLINK_DEFINE_ENUM_VALUE(journal_or_kmsg),
|
|
SD_VARLINK_DEFINE_ENUM_VALUE(syslog_or_kmsg),
|
|
SD_VARLINK_DEFINE_ENUM_VALUE(auto),
|
|
SD_VARLINK_DEFINE_ENUM_VALUE(null));
|
|
|
|
SD_VARLINK_DEFINE_ENUM_TYPE(
|
|
OOMPolicy,
|
|
SD_VARLINK_DEFINE_ENUM_VALUE(continue),
|
|
SD_VARLINK_DEFINE_ENUM_VALUE(stop),
|
|
SD_VARLINK_DEFINE_ENUM_VALUE(kill));
|
|
|
|
static SD_VARLINK_DEFINE_STRUCT_TYPE(
|
|
LogLevelStruct,
|
|
SD_VARLINK_FIELD_COMMENT("'console' target log level"),
|
|
SD_VARLINK_DEFINE_FIELD(console, SD_VARLINK_STRING, 0),
|
|
SD_VARLINK_FIELD_COMMENT("'kmsg' target log level"),
|
|
SD_VARLINK_DEFINE_FIELD(kmsg, SD_VARLINK_STRING, 0),
|
|
SD_VARLINK_FIELD_COMMENT("'syslog' target log level"),
|
|
SD_VARLINK_DEFINE_FIELD(syslog, SD_VARLINK_STRING, 0),
|
|
SD_VARLINK_FIELD_COMMENT("'journal' target log level"),
|
|
SD_VARLINK_DEFINE_FIELD(journal, SD_VARLINK_STRING, 0));
|
|
|
|
/* The split between ManagerContext and ManagerRuntime follows the rule:
|
|
* - Context is what cannot change once configuration is loaded. You can think about context settings as constants.
|
|
* - Runtime is changeable settings at runtime, in other words - variables. */
|
|
|
|
static SD_VARLINK_DEFINE_STRUCT_TYPE(
|
|
ManagerContext,
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#LogColor="),
|
|
SD_VARLINK_DEFINE_FIELD(ShowStatus, SD_VARLINK_BOOL, 0),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#LogColor="),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(LogLevel, LogLevelStruct, 0),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#LogColor="),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(LogTarget, LogTarget, 0),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#ManagerEnvironment="),
|
|
SD_VARLINK_DEFINE_FIELD(Environment, SD_VARLINK_STRING, SD_VARLINK_ARRAY|SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#DefaultStandardOutput="),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(DefaultStandardOutput, ExecOutputType, 0),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#DefaultStandardError="),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(DefaultStandardError, ExecOutputType, 0),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#ServiceWatchdogs="),
|
|
SD_VARLINK_DEFINE_FIELD(ServiceWatchdogs, SD_VARLINK_BOOL, 0),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#DefaultTimerAccuracySec="),
|
|
SD_VARLINK_DEFINE_FIELD(DefaultTimerAccuracyUSec, SD_VARLINK_INT, 0),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#DefaultTimeoutStartSec="),
|
|
SD_VARLINK_DEFINE_FIELD(DefaultTimeoutStartUSec, SD_VARLINK_INT, 0),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#DefaultTimeoutStopSec="),
|
|
SD_VARLINK_DEFINE_FIELD(DefaultTimeoutStopUSec, SD_VARLINK_INT, 0),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#DefaultTimeoutAbortSec="),
|
|
SD_VARLINK_DEFINE_FIELD(DefaultTimeoutAbortUSec, SD_VARLINK_INT, 0),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#DefaultDeviceTimeoutSec="),
|
|
SD_VARLINK_DEFINE_FIELD(DefaultDeviceTimeoutUSec, SD_VARLINK_INT, 0),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#DefaultRestartSec="),
|
|
SD_VARLINK_DEFINE_FIELD(DefaultRestartUSec, SD_VARLINK_INT, 0),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#DefaultStartLimit="),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(DefaultStartLimit, RateLimit, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#DefaultIOAccounting="),
|
|
SD_VARLINK_DEFINE_FIELD(DefaultIOAccounting, SD_VARLINK_BOOL, 0),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#DefaultIPAccounting="),
|
|
SD_VARLINK_DEFINE_FIELD(DefaultIPAccounting, SD_VARLINK_BOOL, 0),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#DefaultMemoryAccounting="),
|
|
SD_VARLINK_DEFINE_FIELD(DefaultMemoryAccounting, SD_VARLINK_BOOL, 0),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#DefaultTasksAccounting="),
|
|
SD_VARLINK_DEFINE_FIELD(DefaultTasksAccounting, SD_VARLINK_BOOL, 0),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#DefaultLimitCPU="),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(DefaultLimits, ResourceLimitTable, 0),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#DefaultTasksMax="),
|
|
SD_VARLINK_DEFINE_FIELD(DefaultTasksMax, SD_VARLINK_INT, 0),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#DefaultMemoryPressureThresholdUSec="),
|
|
SD_VARLINK_DEFINE_FIELD(DefaultMemoryPressureThresholdUSec, SD_VARLINK_INT, 0),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#DefaultMemoryPressureWatch="),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(DefaultMemoryPressureWatch, CGroupPressureWatch, 0),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#DefaultCPUPressureThresholdUSec="),
|
|
SD_VARLINK_DEFINE_FIELD(DefaultCPUPressureThresholdUSec, SD_VARLINK_INT, 0),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#DefaultCPUPressureWatch="),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(DefaultCPUPressureWatch, CGroupPressureWatch, 0),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#DefaultIOPressureThresholdUSec="),
|
|
SD_VARLINK_DEFINE_FIELD(DefaultIOPressureThresholdUSec, SD_VARLINK_INT, 0),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#DefaultIOPressureWatch="),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(DefaultIOPressureWatch, CGroupPressureWatch, 0),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#RuntimeWatchdogSec="),
|
|
SD_VARLINK_DEFINE_FIELD(RuntimeWatchdogUSec, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#RebootWatchdogSec="),
|
|
SD_VARLINK_DEFINE_FIELD(RebootWatchdogUSec, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#KExecWatchdogSec="),
|
|
SD_VARLINK_DEFINE_FIELD(KExecWatchdogUSec, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#RuntimeWatchdogPreSec="),
|
|
SD_VARLINK_DEFINE_FIELD(RuntimeWatchdogPreUSec, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#RuntimeWatchdogPreGovernor="),
|
|
SD_VARLINK_DEFINE_FIELD(RuntimeWatchdogPreGovernor, SD_VARLINK_STRING, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#WatchdogDevice="),
|
|
SD_VARLINK_DEFINE_FIELD(WatchdogDevice, SD_VARLINK_STRING, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#TimerSlackNSec="),
|
|
SD_VARLINK_DEFINE_FIELD(TimerSlackNSec, SD_VARLINK_INT, 0),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#DefaultOOMPolicy="),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(DefaultOOMPolicy, OOMPolicy, 0),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#DefaultOOMScoreAdjust="),
|
|
SD_VARLINK_DEFINE_FIELD(DefaultOOMScoreAdjust, SD_VARLINK_INT, 0),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#DefaultRestrictSUIDSGID="),
|
|
SD_VARLINK_DEFINE_FIELD(DefaultRestrictSUIDSGID, SD_VARLINK_BOOL, 0),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#CtrlAltDelBurstAction="),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(CtrlAltDelBurstAction, EmergencyAction, 0),
|
|
SD_VARLINK_FIELD_COMMENT("The console on which systemd asks for confirmation when spawning processes"),
|
|
SD_VARLINK_DEFINE_FIELD(ConfirmSpawn, SD_VARLINK_STRING, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("Root of the control group hierarchy that the manager is running in"),
|
|
SD_VARLINK_DEFINE_FIELD(ControlGroup, SD_VARLINK_STRING, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("https://www.freedesktop.org/software/systemd/man/"PROJECT_VERSION_STR"/systemd-system.conf.html#DefaultMemoryZSwapWriteback="),
|
|
SD_VARLINK_DEFINE_FIELD(DefaultMemoryZSwapWriteback, SD_VARLINK_BOOL, 0));
|
|
|
|
static SD_VARLINK_DEFINE_STRUCT_TYPE(
|
|
ManagerRuntime,
|
|
SD_VARLINK_FIELD_COMMENT("The version string of the running systemd instance"),
|
|
SD_VARLINK_DEFINE_FIELD(Version, SD_VARLINK_STRING, 0),
|
|
SD_VARLINK_FIELD_COMMENT("A short ID string describing the architecture the systemd instance is running on"),
|
|
SD_VARLINK_DEFINE_FIELD(Architecture, SD_VARLINK_STRING, 0),
|
|
SD_VARLINK_FIELD_COMMENT("The features that have been enabled and disabled for this build"),
|
|
SD_VARLINK_DEFINE_FIELD(Features, SD_VARLINK_STRING, 0),
|
|
SD_VARLINK_FIELD_COMMENT("An array of strings describing the taints applied to the running system"),
|
|
SD_VARLINK_DEFINE_FIELD(Taints, SD_VARLINK_STRING, SD_VARLINK_ARRAY|SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("The unit search path"),
|
|
SD_VARLINK_DEFINE_FIELD(UnitPath, SD_VARLINK_STRING, SD_VARLINK_ARRAY),
|
|
SD_VARLINK_FIELD_COMMENT("A short ID string describing the virtualization technology the system runs in"),
|
|
SD_VARLINK_DEFINE_FIELD(Virtualization, SD_VARLINK_STRING, 0),
|
|
SD_VARLINK_FIELD_COMMENT("A short ID string describing the confidential virtualization technology the system runs in"),
|
|
SD_VARLINK_DEFINE_FIELD(ConfidentialVirtualization, SD_VARLINK_STRING, 0),
|
|
SD_VARLINK_FIELD_COMMENT("Timestamp when the firmware first began execution"),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(FirmwareTimestamp, Timestamp, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("Timestamp when the boot loader first began execution"),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(LoaderTimestamp, Timestamp, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("Timestamp when the kernel first began execution"),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(KernelTimestamp, Timestamp, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("Timestamp when the initrd first began execution"),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(InitRDTimestamp, Timestamp, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("Timestamp when the initrd first began execution"),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(UserspaceTimestamp, Timestamp, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("Timestamp when the system finished booting up"),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(FinishTimestamp, Timestamp, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("Timestamp when the manager started uploading security policies to the kernel"),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(SecurityStartTimestamp, Timestamp, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("Timestamp when the manager finished uploading security policies to the kernel"),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(SecurityFinishTimestamp, Timestamp, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("Timestamp when the manager started executing generators"),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(GeneratorsStartTimestamp, Timestamp, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("Timestamp when the manager finished executing generators"),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(GeneratorsFinishTimestamp, Timestamp, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("Timestamp when the manager first started loading units"),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(UnitsLoadStartTimestamp, Timestamp, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("Timestamp when the manager first finished loading units"),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(UnitsLoadFinishTimestamp, Timestamp, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("Timestamp when the manager last started loading units"),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(UnitsLoadTimestamp, Timestamp, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("Timestamp when the manager started uploading security policies to the kernel in the initrd"),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(InitRDSecurityStartTimestamp, Timestamp, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("Timestamp when the manager finished uploading security policies to the kernel in the initrd"),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(InitRDSecurityFinishTimestamp, Timestamp, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("Timestamp when the manager started executing generators in the initrd"),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(InitRDGeneratorsStartTimestamp, Timestamp, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("Timestamp when the manager finished executing generators in the initrd"),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(InitRDGeneratorsFinishTimestamp, Timestamp, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("Timestamp when the manager first started loading units in the initrd"),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(InitRDUnitsLoadStartTimestamp, Timestamp, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("Timestamp when the manager first finished loading units in the initrd"),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(InitRDUnitsLoadFinishTimestamp, Timestamp, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("The amount of unique unit names currently loaded"),
|
|
SD_VARLINK_DEFINE_FIELD(NNames, SD_VARLINK_INT, 0),
|
|
SD_VARLINK_FIELD_COMMENT("The amount of failed units"),
|
|
SD_VARLINK_DEFINE_FIELD(NFailedUnits, SD_VARLINK_INT, 0),
|
|
SD_VARLINK_FIELD_COMMENT("The amount of currently queued jobs"),
|
|
SD_VARLINK_DEFINE_FIELD(NJobs, SD_VARLINK_INT, 0),
|
|
SD_VARLINK_FIELD_COMMENT("The total amount of queued jobs"),
|
|
SD_VARLINK_DEFINE_FIELD(NInstalledJobs, SD_VARLINK_INT, 0),
|
|
SD_VARLINK_FIELD_COMMENT("The total amount of failed jobs"),
|
|
SD_VARLINK_DEFINE_FIELD(NFailedJobs, SD_VARLINK_INT, 0),
|
|
SD_VARLINK_FIELD_COMMENT("IDs of transactions that encountered ordering cycle"),
|
|
SD_VARLINK_DEFINE_FIELD(TransactionsWithOrderingCycle, SD_VARLINK_INT, SD_VARLINK_ARRAY|SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("Boot progress as a floating point value between 0.0 and 1.0"),
|
|
SD_VARLINK_DEFINE_FIELD(Progress, SD_VARLINK_FLOAT, 0),
|
|
SD_VARLINK_FIELD_COMMENT("Timestamp when the hardware watchdog was last pinged"),
|
|
SD_VARLINK_DEFINE_FIELD_BY_TYPE(WatchdogLastPingTimestamp, Timestamp, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("Current state of the system"),
|
|
SD_VARLINK_DEFINE_FIELD(SystemState, SD_VARLINK_STRING, 0),
|
|
SD_VARLINK_FIELD_COMMENT("Exit code of the manager"),
|
|
SD_VARLINK_DEFINE_FIELD(ExitCode, SD_VARLINK_INT, 0),
|
|
SD_VARLINK_FIELD_COMMENT("Encodes how many soft-reboots were successfully completed"),
|
|
SD_VARLINK_DEFINE_FIELD(SoftRebootsCount, SD_VARLINK_INT, 0),
|
|
SD_VARLINK_FIELD_COMMENT("Number of successfully completed configuration reloads"),
|
|
SD_VARLINK_DEFINE_FIELD(ReloadCount, SD_VARLINK_INT, 0));
|
|
|
|
static SD_VARLINK_DEFINE_METHOD(
|
|
Describe,
|
|
SD_VARLINK_FIELD_COMMENT("Configuration of the manager"),
|
|
SD_VARLINK_DEFINE_OUTPUT_BY_TYPE(context, ManagerContext, 0),
|
|
SD_VARLINK_FIELD_COMMENT("Runtime information of the manager"),
|
|
SD_VARLINK_DEFINE_OUTPUT_BY_TYPE(runtime, ManagerRuntime, 0));
|
|
|
|
static SD_VARLINK_DEFINE_METHOD(
|
|
Reexecute);
|
|
|
|
static SD_VARLINK_DEFINE_METHOD(
|
|
Reload);
|
|
|
|
static SD_VARLINK_DEFINE_METHOD_FULL(
|
|
EnqueueMarkedJobs,
|
|
SD_VARLINK_SUPPORTS_MORE,
|
|
SD_VARLINK_FIELD_COMMENT("Enqueued unit ID"),
|
|
SD_VARLINK_DEFINE_OUTPUT(unitID, SD_VARLINK_STRING, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("ID of enqueued job (if successful)"),
|
|
SD_VARLINK_DEFINE_OUTPUT(jobID, SD_VARLINK_INT, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("Varlink error ID (on failure)"),
|
|
SD_VARLINK_DEFINE_OUTPUT(error, SD_VARLINK_STRING, SD_VARLINK_NULLABLE),
|
|
SD_VARLINK_FIELD_COMMENT("Job enqueue error message (on failure)"),
|
|
SD_VARLINK_DEFINE_OUTPUT(errorMessage, SD_VARLINK_STRING, SD_VARLINK_NULLABLE));
|
|
|
|
static SD_VARLINK_DEFINE_METHOD(PowerOff);
|
|
static SD_VARLINK_DEFINE_METHOD(Reboot);
|
|
static SD_VARLINK_DEFINE_METHOD(Halt);
|
|
static SD_VARLINK_DEFINE_METHOD(KExec);
|
|
static SD_VARLINK_DEFINE_METHOD(
|
|
SoftReboot,
|
|
SD_VARLINK_FIELD_COMMENT("New root directory for the soft reboot"),
|
|
SD_VARLINK_DEFINE_INPUT(root, SD_VARLINK_STRING, SD_VARLINK_NULLABLE));
|
|
|
|
static SD_VARLINK_DEFINE_ERROR(RateLimitReached);
|
|
|
|
SD_VARLINK_DEFINE_INTERFACE(
|
|
io_systemd_Manager,
|
|
"io.systemd.Manager",
|
|
&vl_method_Describe,
|
|
SD_VARLINK_SYMBOL_COMMENT("Reexecute the main manager process"),
|
|
&vl_method_Reexecute,
|
|
SD_VARLINK_SYMBOL_COMMENT("Reload the manager configuration"),
|
|
&vl_method_Reload,
|
|
SD_VARLINK_SYMBOL_COMMENT("Enqueue all marked jobs"),
|
|
&vl_method_EnqueueMarkedJobs,
|
|
SD_VARLINK_SYMBOL_COMMENT("Power off the system"),
|
|
&vl_method_PowerOff,
|
|
SD_VARLINK_SYMBOL_COMMENT("Reboot the system"),
|
|
&vl_method_Reboot,
|
|
SD_VARLINK_SYMBOL_COMMENT("Halt the system"),
|
|
&vl_method_Halt,
|
|
SD_VARLINK_SYMBOL_COMMENT("Reboot the system via kexec"),
|
|
&vl_method_KExec,
|
|
SD_VARLINK_SYMBOL_COMMENT("Soft-reboot the userspace"),
|
|
&vl_method_SoftReboot,
|
|
&vl_error_RateLimitReached,
|
|
&vl_type_ManagerContext,
|
|
&vl_type_ManagerRuntime,
|
|
&vl_type_Timestamp,
|
|
&vl_type_ResourceLimit,
|
|
&vl_type_ResourceLimitTable,
|
|
&vl_type_RateLimit,
|
|
&vl_type_LogLevelStruct,
|
|
&vl_type_LogTarget,
|
|
&vl_type_OOMPolicy,
|
|
&vl_type_ExecOutputType,
|
|
&vl_type_CGroupPressureWatch,
|
|
&vl_type_EmergencyAction);
|