[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