62 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#ifndef __WATCHDOG_PRETIMEOUT_H3#define __WATCHDOG_PRETIMEOUT_H4 5#define WATCHDOG_GOV_NAME_MAXLEN 206 7struct watchdog_device;8 9struct watchdog_governor {10 const char name[WATCHDOG_GOV_NAME_MAXLEN];11 void (*pretimeout)(struct watchdog_device *wdd);12};13 14#if IS_ENABLED(CONFIG_WATCHDOG_PRETIMEOUT_GOV)15/* Interfaces to watchdog pretimeout governors */16int watchdog_register_governor(struct watchdog_governor *gov);17void watchdog_unregister_governor(struct watchdog_governor *gov);18 19/* Interfaces to watchdog_dev.c */20int watchdog_register_pretimeout(struct watchdog_device *wdd);21void watchdog_unregister_pretimeout(struct watchdog_device *wdd);22int watchdog_pretimeout_available_governors_get(char *buf);23int watchdog_pretimeout_governor_get(struct watchdog_device *wdd, char *buf);24int watchdog_pretimeout_governor_set(struct watchdog_device *wdd,25 const char *buf);26 27#if IS_ENABLED(CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_NOOP)28#define WATCHDOG_PRETIMEOUT_DEFAULT_GOV "noop"29#elif IS_ENABLED(CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_PANIC)30#define WATCHDOG_PRETIMEOUT_DEFAULT_GOV "panic"31#endif32 33#else34static inline int watchdog_register_pretimeout(struct watchdog_device *wdd)35{36 return 0;37}38 39static inline void watchdog_unregister_pretimeout(struct watchdog_device *wdd)40{41}42 43static inline int watchdog_pretimeout_available_governors_get(char *buf)44{45 return -EINVAL;46}47 48static inline int watchdog_pretimeout_governor_get(struct watchdog_device *wdd,49 char *buf)50{51 return -EINVAL;52}53 54static inline int watchdog_pretimeout_governor_set(struct watchdog_device *wdd,55 const char *buf)56{57 return -EINVAL;58}59#endif60 61#endif62