Mainline the watchdog framework for the Linux kernel


 * Summary: Mainline the watchdog framework for the Linux kernel


 * Proposer: Wolfram Sang

Description
The watchdog API of the Linux kernel is documented and has been in use for years. Yet, there is no abstraction for its common functionality (open, write, ioctl, close), so every watchdog driver has to implement those methods on its own. In addition to the vast amount of code duplication in the kernel source, this is also error-prone as there are subtle corner-cases in handling the watchdog and the userspace input correctly. Although there is code review for new drivers, it seems very desirable to improve the situation as a whole.

There is a draft for a generic framework by the watchdog maintainer (see related work). Its development is quite slow, though. The current state already took years and was still not proposed for mainline inclusion. This proposal aims to improve the situation by

1) upstreaming the framework 2) converting some drivers to create a reference 3) adding a HOWTO for this conversion

Although watchdogs are usually rather simple devices, they are crucial for the stability concept of an enormous number of devices. The benefit of this proposal is to have a rock-solid, well maintainable and trustworthy watchdog framework, which can improve the existing implementations and makes writing new drivers faster and less error-prone.

Related work

 * Current state by Wim van Sebroeck (watchdog maintainer):
 * http://git.kernel.org/?p=linux/kernel/git/wim/linux-2.6-watchdog-next.git;a=shortlog;h=refs/heads/generic-watchdog

Scope
My estimate would be 2-3 weeks of development, review and testing.

Contractor Candidates
Wim van Sebroeck as the watchdog maintainer would be the first candidate for 1). I'd like to nominate myself to do 2) and 3) with a focus on embedded platforms. I would also assist 1) by either doing a thorough peer-review of the code or by taking care of the mainline process in case Wim does not have time for it (keeping his credits, of course).