[Buildroot] [PATCH 1/1] package/watchdogd: new package
Arnout Vandecappelle
arnout at mind.be
Wed Oct 27 20:13:42 UTC 2021
On 10/10/2021 17:49, Joachim Wiberg wrote:
> This patch adds support for watchdogd, a watchdog daemon with built-in
> process supervisor[1] as well as support for monitoring memory & file
> descriptor leaks, and CPU load average. When a monitored resource
> reaches a high watermark, a warning message is logged and when critical
> level is reached, the cause is saved and the system is rebooted. On
> reboot the reset cause can be retrieved to help locate the culprit.
>
> Support for SysV init script in this patch, and systemd unit file is
> installed from the one bundled with the package. Both files supoort
> additional command line options in /etc/default/watchdogd.
>
> The Config.in is slightly big, but allows for disabling or adjusting
> the poll interval for each resource monitor.
>
> For more information, see https://github.com/troglobit/watchdogd
>
> [1]: processes must have their main loop instrumented for supervision.
>
> Signed-off-by: Joachim Wiberg <troglobit at gmail.com>
Applied to master, thanks, with changes specified below.
> ---
> DEVELOPERS | 1 +
> package/Config.in | 1 +
> package/watchdogd/Config.in | 69 ++++++++++++++++++++++++++++++++
> package/watchdogd/S01watchdogd | 47 ++++++++++++++++++++++
> package/watchdogd/watchdogd.hash | 5 +++
> package/watchdogd/watchdogd.mk | 55 +++++++++++++++++++++++++
> 6 files changed, 178 insertions(+)
> create mode 100644 package/watchdogd/Config.in
> create mode 100755 package/watchdogd/S01watchdogd
> create mode 100644 package/watchdogd/watchdogd.hash
> create mode 100644 package/watchdogd/watchdogd.mk
>
> diff --git a/DEVELOPERS b/DEVELOPERS
> index 7ebfc9234b..cf68b94685 100644
> --- a/DEVELOPERS
> +++ b/DEVELOPERS
> @@ -1335,6 +1335,7 @@ F: package/mg/
> F: package/netcalc/
> F: package/ssdp-responder/
> F: package/sysklogd/
> +F: package/watchdogd/
>
> N: Joao Pinto <jpinto at synopsys.com>
> F: board/synopsys/vdk/
> diff --git a/package/Config.in b/package/Config.in
> index 9fed0ab4cb..167a6339c1 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -2540,6 +2540,7 @@ menu "System tools"
> source "package/unscd/Config.in"
> source "package/util-linux/Config.in"
> source "package/watchdog/Config.in"
> + source "package/watchdogd/Config.in"
> source "package/xdg-dbus-proxy/Config.in"
> source "package/xen/Config.in"
> source "package/xvisor/Config.in"
> diff --git a/package/watchdogd/Config.in b/package/watchdogd/Config.in
> new file mode 100644
> index 0000000000..48abbac8fa
> --- /dev/null
> +++ b/package/watchdogd/Config.in
> @@ -0,0 +1,69 @@
> +config BR2_PACKAGE_WATCHDOGD
> + bool "watchdogd"
> + depends on BR2_USE_MMU # fork()
> + select BR2_PACKAGE_LIBCONFUSE
> + select BR2_PACKAGE_LIBITE
> + select BR2_PACKAGE_LIBUEV
> + help
> + Extended version of uClinux-dist watchdogd. Monitors loadavg,
> + file descriptors and memory leaks, and capable of supervising
> + your processes main loop using an instrumentation API.
> +
> + A reset reason is saved for power loss, CPU overload, or any
> + of the monitored conditions (above). The full capabilities
> + are limited by the kernel watchdog driver, but even the basic
> + "softdog" driver is supported. See /etc/watchdogd.conf for
> + details, and try watchdogctl for system status and available
> + commands.
> +
> + https://github.com/troglobit/watchdogd/
> +
> +if BR2_PACKAGE_WATCHDOGD
> +
> +config BR2_PACKAGE_WATCHDOGD_TEST_SUITE
> + bool "Enable watchdogctl test cases"
> + default y
> + help
> + The watchdogctl program comes with a suite of tests built-in.
> + They can be used to verify correct operation of watchdogd and
> + the kernel watchdog driver.
This doesn't sound like something you'd want enabled by default, so I removed
the "default y".
> +
> + Default: enabled
> +
> +config BR2_PACKAGE_WATCHDOGD_GENERIC_POLL
> + int "Generic script monitor poll interval (sec)"
> + default "300"
> + help
> + Poll interval for generic script monitor, in seconds. A value
> + of zero (0) disables the monitor.
> +
> + Default: 300 seconds
We normally don't have such Default: entries in the help text. It's kind of
pointless IMHO.
[snip]
> +define WATCHDOGD_INSTALL_INIT_SYSV
> + $(INSTALL) -D -m 0755 package/watchdogd/S01watchdogd \
> + $(TARGET_DIR)/etc/init.d/S01watchdogd
> +endef
> +
> +define WATCHDOGD_INSTALL_INIT_SYSTEMD
> + $(INSTALL) -D -m 644 $(WATCHDOGD_PKGDIR)/watchdogd.service \
WATCHDOGD_PKGDIR is package/watchdog. You want WATCHDOGD_SRCDIR here.
Regards,
Arnout
> + $(TARGET_DIR)/usr/lib/systemd/system/watchdogd.service
> +endef
> +
> +$(eval $(autotools-package))
>
More information about the buildroot
mailing list