1 #ifndef __WATCHDOG_PRETIMEOUT_H 2 #define __WATCHDOG_PRETIMEOUT_H 3 4 #define WATCHDOG_GOV_NAME_MAXLEN 20 5 6 struct watchdog_device; 7 8 struct 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 */ 15 int watchdog_register_governor(struct watchdog_governor *gov); 16 void watchdog_unregister_governor(struct watchdog_governor *gov); 17 18 /* Interfaces to watchdog_dev.c */ 19 int watchdog_register_pretimeout(struct watchdog_device *wdd); 20 void watchdog_unregister_pretimeout(struct watchdog_device *wdd); 21 int watchdog_pretimeout_available_governors_get(char *buf); 22 int watchdog_pretimeout_governor_get(struct watchdog_device *wdd, char *buf); 23 int 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 33 static inline int watchdog_register_pretimeout(struct watchdog_device *wdd) 34 { 35 return 0; 36 } 37 38 static inline void watchdog_unregister_pretimeout(struct watchdog_device *wdd) 39 { 40 } 41 42 static inline int watchdog_pretimeout_available_governors_get(char *buf) 43 { 44 return -EINVAL; 45 } 46 47 static inline int watchdog_pretimeout_governor_get(struct watchdog_device *wdd, 48 char *buf) 49 { 50 return -EINVAL; 51 } 52 53 static 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