summaryrefslogtreecommitdiffstats
path: root/usr.sbin/watchdogd/watchdogd.c
Commit message (Collapse)AuthorAgeFilesLines
* MFC r308040,308479: nap time between pats is forced to be at most halfavg2016-11-171-9/+14
| | | | of the timeout
* Add a new exit-timeout option to watchdogd.ian2015-08-191-5/+11
| | | | | | | | | | | | | | | | | | | | | Watchdogd currently disables the watchdog when it exits, such as during rc.shutdown processing. That leaves the system vulnerable to getting hung or deadlocked during the shutdown part of a reboot. For embedded systems it's especially important that the hardware watchdog always be active. It can also be useful for servers that are administered remotely. The new -x <seconds> option tells watchdogd to program the watchdog with the given timeout just before exiting. The -x value can be longer or shorter than the -t normal time value, to allow for various exceptional conditions at shutdown such as allowing extra time for buffer flushing. The exit value is also used internally in the "failsafe" handling (which used to just disable the watchdog), on the theory that if you're using this option, "safe" means having the watchdog always running, not disabled. The default is still to disable the watchdog on exit if -x is not specified. Differential Revision: https://reviews.freebsd.org/D2556 (timed out)
* Default to use 10 seconds as nap interval instead of 1.delphij2014-11-161-1/+1
| | | | | | | | | | | | | | | | | | | | | Previously, we have a nap interval of 1 second while we have a timeout of 128 seconds by default, which could be an overkill, and for some hardware the patting action may be expensive. Note that the choice of nap interval is still arbitrary. We preferred a safe value where even when the system is very heavily loaded, the watchdog should not shoot the system down if it's not really hung. According to the manual page of Linux's watchdog daemon, the nap interval time of theirs is 10 seconds, which seems to be a reasonable value -- according to Intel documentation AP-725 (Document Number: 292273-001), ICH5's maximum timeout is about 37.5 seconds, which the ichwd(4) driver would set when we requested 128 seconds (although it should probably feed back this as an error and do not set the timeout). Since that's the shortest maximum value, 10 seconds seems to be a right choice for us too. Discussed with: alfred MFC after: 1 month
* Fix bug in r253719: fix command line watchdog disable.alfred2013-08-101-7/+9
| | | | | r253719 disallowed watchdog(8) from disabling the watchdog by breaking the ability to pass 0 as a timeout arg. Fix this.
* Apply a casting sledgehammer.jhb2013-07-301-1/+1
| | | | Submitted by: dhw
* Fix printf of seconds for systems where time_t is 64 bits.ian2013-07-281-2/+3
|
* Fix watchdog pretimeout.alfred2013-07-271-17/+179
| | | | | | | | The original API calls for pow2ns, however the new APIs from Linux call for seconds. We need to be able to convert to/from 2^Nns to seconds in both userland and kernel to fix this and properly compare units.
* Mark the act_tbl static/const.ed2013-04-081-1/+1
| | | | | | | This table is only used within this source file and is only accessed read-only. MFC after: 1 week
* Invert the meaning of -S (added in r247405) and document its meaning. Also,markj2013-03-261-14/+25
| | | | | | | | | | don't carp about the watchdog command taking too long until after the watchdog has been patted, and don't carp via warnx(3) unless -S is set since syslog(3) already logs to standard error otherwise. Discussed with: alfred Reviewed by: alfred Approved by: emaste (co-mentor)
* watchdogd(8) and watchdog(4) enhancements.alfred2013-02-271-15/+318
| | | | | | | | | | | | | | | | | | | The following support was added to watchdog(4): - Support to query the outstanding timeout. - Support to set a software pre-timeout function watchdog with an 'action' - Support to set a software only watchdog with a configurable 'action' 'action' can be a mask specifying a single operation or a combination of: log(9), printf(9), panic(9) and/or kdb_enter(9). Support the following in watchdogged: - Support to utilize the new additions to watchdog(4). - Support to warn if a watchdog script runs for too long. - Support for "dry run" where we do not actually arm the watchdog, but only report on our timing. Sponsored by: iXsystems, Inc. MFC after: 1 month
* Revert accidental regression to previous misspelling.ian2013-01-261-1/+1
| | | | Approved by: cognet (mentor)
* Reduce watchdogd's memory footprint when running daemonized.ian2013-01-261-1/+9
| | | | | | | | | | | This uses the recently-added jemalloc(3) feature of setting the lg_chunk tuning option to zero to request that memory be allocated in the smallest chunks possible. Without this option, the default is to initally map 8MB, and then the mlockall() call wires that entire allocation even though the program only uses a few Kbytes of it at runtime. PR: bin/173332 Approved by: cognet (mentor)
* Spelling: exitting -> exitingalfred2013-01-181-1/+1
| | | | MFC after: 2 weeks
* Replace log(3) with flsll(3) for watchdogd(8) and drop libm dependency.delphij2012-11-031-1/+2
| | | | MFC after: 2 weeks
* - It's also need to lock current memory.zont2012-08-301-1/+1
| | | | | Approved by: kib (mentor) MFC after: 1 week
* - Don't allow watchdogd(8) to be swapped out.zont2012-08-281-0/+2
| | | | | | | | | On machines with huge amount of swap and high IO activity, watchdogd(8) may wait for a swap memory longer than timeout and sometimes fires. Approved by: kib (mentor) MFC after: 1 week
* Protect the watchdog daemon against swap OOM killer. This is similar toemaste2010-09-261-0/+3
| | | | SVN r199804 which added protection to sshd, cron, syslogd, and inetd.
* Staticify local variables.delphij2010-07-201-13/+11
| | | | | | | | While I'm there also add a 'static' keyword for a function to make it consistent with prototype. Reviewed by: phk MFC after: 3 months
* ANSIfy almost all applications that use WARNS=6.ed2009-12-291-2/+2
| | | | | | | I was considering committing all these patches one by one, but as discussed with brooks@, there is no need to do this. If we ever need/want to merge these changes back, it is still possible to do this per application.
* Don't hide an error if the initial attempt to program a watchdog fromru2009-12-211-1/+1
| | | | within watchdogd(8) fails. This is also consistent with watchdog(8).
* Don't exit from watchdogd on receiving a signal if we cannot stop the watchdog.n_hibma2006-12-151-11/+18
| | | | | That'll require -KILL. This avoids resetting your system on one of the watchdogs that you cannot disable.
* Fix usage().phk2006-03-061-1/+1
| | | | Submitted by: Adrian Steinmann <ast@marabu.ch>
* Report any errors we might see when disabling the watchdog.phk2005-09-301-2/+3
| | | | | Complain about extra arguments so people don't get surprised if they type "watchdog 0"
* Pidfiles should be created with permission preventing users from openingpjd2005-09-161-1/+1
| | | | | | | them for reading. When user can open file for reading, he can also flock(2) it, which can lead to confusions. Pointed out by: green
* Use pidfile(3) in watchdogd(8).pjd2005-08-241-7/+16
|
* When disarming a watchdog by using an interval of WD_TO_NEVER a non-zeromarius2005-03-191-1/+2
| | | | | | | return value of the ioctl doesn't indicate that the command has failed so don't let watchdog(8) return an error in this case. MFC after: 3 days
* Disable memory locking that could keep watchdogd from deadlocking itselfgreen2004-07-281-4/+0
| | | | | | if the swap subsystem failed. Requested by: phk
* Now that mlockall(2) is unbroken, use it to keep watchdogd(8) permanentlygreen2004-07-231-0/+4
| | | | out of swap.
* Bump the copyright year since I forgot last time.smkelly2004-05-031-1/+1
|
* Update comments to reflect changes made by phk. Also no longer needsmkelly2004-04-281-5/+2
| | | | <sys/sysctl.h>.
* Rename the WATCHDOG option to SW_WATCHDOG and make it use thephk2004-02-281-51/+104
| | | | | | | | | | | generic watchdoc(9) interface. Make watchdogd(8) perform as watchdog(8) as well, and make it possible to specify a check command to run, timeout and sleep periods. Update watchdog(4) to talk about the generic interface and add new watchdog(8) page.
* o style(9) fixessmkelly2003-07-031-13/+8
| | | | | | | | | | | - Reordered #includes - Only include <sys/types.h>, not it and <sys/cdefs.h> o style.Makefile(5) fixes - No SRCS= line when only one src file with same name as program o Use warn()/errx() instead of fprintf() - Integrated patch from Philippe Charnier <charnier@xp11.frmug.org> Approved by: jeff (mentor)
* Unbreak this for alpha and friends.smkelly2003-06-261-2/+2
| | | | Double pointy hat to me, or something.
* o Fix typo.maxim2003-06-261-2/+2
| | | | Submitted by: smkelly
* - Add a software watchdog facility.smkelly2003-06-261-0/+232
This commit has two pieces. One half is the watchdog kernel code which lives primarily in hardclock() in sys/kern/kern_clock.c. The other half is a userland daemon which, when run, will keep the watchdog from firing while the userland is intact and functioning. Approved by: jeff (mentor)
OpenPOWER on IntegriCloud