mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-03 01:17:45 +03:00
watchdog: always prefer /dev/watchdog0 over /dev/watchdog
This commit is contained in:
parent
a73b7b1b0e
commit
59bcac0b1a
@ -144,7 +144,7 @@
|
|||||||
depending on hardware capabilities).</para>
|
depending on hardware capabilities).</para>
|
||||||
|
|
||||||
<para>If <varname>RuntimeWatchdogSec=</varname> is set to a non-zero value, the watchdog hardware
|
<para>If <varname>RuntimeWatchdogSec=</varname> is set to a non-zero value, the watchdog hardware
|
||||||
(<filename>/dev/watchdog</filename> or the path specified with <varname>WatchdogDevice=</varname> or
|
(<filename>/dev/watchdog0</filename> or the path specified with <varname>WatchdogDevice=</varname> or
|
||||||
the kernel option <varname>systemd.watchdog-device=</varname>) will be programmed to automatically
|
the kernel option <varname>systemd.watchdog-device=</varname>) will be programmed to automatically
|
||||||
reboot the system if it is not contacted within the specified timeout interval. The system manager
|
reboot the system if it is not contacted within the specified timeout interval. The system manager
|
||||||
will ensure to contact it at least once in half the specified timeout interval. This feature requires
|
will ensure to contact it at least once in half the specified timeout interval. This feature requires
|
||||||
@ -182,7 +182,7 @@
|
|||||||
|
|
||||||
<listitem><para>Configure the hardware watchdog device that the
|
<listitem><para>Configure the hardware watchdog device that the
|
||||||
runtime and shutdown watchdog timers will open and use. Defaults
|
runtime and shutdown watchdog timers will open and use. Defaults
|
||||||
to <filename>/dev/watchdog</filename>. This setting has no
|
to <filename>/dev/watchdog0</filename>. This setting has no
|
||||||
effect if a hardware watchdog is not available.</para></listitem>
|
effect if a hardware watchdog is not available.</para></listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
#include "errno-util.h"
|
#include "errno-util.h"
|
||||||
#include "fd-util.h"
|
#include "fd-util.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
#include "path-util.h"
|
||||||
#include "string-util.h"
|
#include "string-util.h"
|
||||||
#include "time-util.h"
|
#include "time-util.h"
|
||||||
#include "watchdog.h"
|
#include "watchdog.h"
|
||||||
@ -127,7 +128,13 @@ static int open_watchdog(void) {
|
|||||||
if (watchdog_fd >= 0)
|
if (watchdog_fd >= 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
fn = watchdog_device ?: "/dev/watchdog";
|
/* Let's prefer new-style /dev/watchdog0 (i.e. kernel 3.5+) over classic /dev/watchdog. The former
|
||||||
|
* has the benefit that we can easily find the matching directory in sysfs from it, as the relevant
|
||||||
|
* sysfs attributes can only be found via /sys/dev/char/<major>:<minor> if the new-style device
|
||||||
|
* major/minor is used, not the old-style. */
|
||||||
|
fn = !watchdog_device || path_equal(watchdog_device, "/dev/watchdog") ?
|
||||||
|
"/dev/watchdog0" : watchdog_device;
|
||||||
|
|
||||||
watchdog_fd = open(fn, O_WRONLY|O_CLOEXEC);
|
watchdog_fd = open(fn, O_WRONLY|O_CLOEXEC);
|
||||||
if (watchdog_fd < 0)
|
if (watchdog_fd < 0)
|
||||||
return log_debug_errno(errno, "Failed to open watchdog device %s, ignoring: %m", fn);
|
return log_debug_errno(errno, "Failed to open watchdog device %s, ignoring: %m", fn);
|
||||||
|
Loading…
Reference in New Issue
Block a user