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