/* SPDX-License-Identifier: GPL-2.0+ */ /* * watchdog_core.h * * (c) Copyright 2008-2011 Alan Cox <[email protected]>, * All Rights Reserved. * * (c) Copyright 2008-2011 Wim Van Sebroeck <[email protected]>. * * (c) Copyright 2021 Hewlett Packard Enterprise Development LP. * * This source code is part of the generic code that can be used * by all the watchdog timer drivers. * * Based on source code of the following authors: * Matt Domsch <[email protected]>, * Rob Radez <[email protected]>, * Rusty Lynch <[email protected]> * Satyam Sharma <[email protected]> * Randy Dunlap <[email protected]> * * Neither Alan Cox, CymruNet Ltd., Wim Van Sebroeck nor Iguana vzw. * admit liability nor provide warranty for any of this software. * This material is provided "AS-IS" and at no charge. */ #include <linux/hrtimer.h> #include <linux/kthread.h> #define MAX_DOGS … /* * struct watchdog_core_data - watchdog core internal data * @dev: The watchdog's internal device * @cdev: The watchdog's Character device. * @wdd: Pointer to watchdog device. * @lock: Lock for watchdog core. * @status: Watchdog core internal status bits. */ struct watchdog_core_data { … }; /* * Functions/procedures to be called by the core */ extern int watchdog_dev_register(struct watchdog_device *); extern void watchdog_dev_unregister(struct watchdog_device *); extern int __init watchdog_dev_init(void); extern void __exit watchdog_dev_exit(void); static inline bool watchdog_have_pretimeout(struct watchdog_device *wdd) { … } #if IS_ENABLED(CONFIG_WATCHDOG_HRTIMER_PRETIMEOUT) void watchdog_hrtimer_pretimeout_init(struct watchdog_device *wdd); void watchdog_hrtimer_pretimeout_start(struct watchdog_device *wdd); void watchdog_hrtimer_pretimeout_stop(struct watchdog_device *wdd); #else static inline void watchdog_hrtimer_pretimeout_init(struct watchdog_device *wdd) {} static inline void watchdog_hrtimer_pretimeout_start(struct watchdog_device *wdd) {} static inline void watchdog_hrtimer_pretimeout_stop(struct watchdog_device *wdd) {} #endif