1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef __WATCHDOG_PRETIMEOUT_H 3 #define __WATCHDOG_PRETIMEOUT_H 4 5 #define WATCHDOG_GOV_NAME_MAXLEN 20 6 7 struct watchdog_device; 8 9 struct 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 */ 16 int watchdog_register_governor(struct watchdog_governor *gov); 17 void watchdog_unregister_governor(struct watchdog_governor *gov); 18 19 /* Interfaces to watchdog_dev.c */ 20 int watchdog_register_pretimeout(struct watchdog_device *wdd); 21 void watchdog_unregister_pretimeout(struct watchdog_device *wdd); 22 int watchdog_pretimeout_available_governors_get(char *buf); 23 int watchdog_pretimeout_governor_get(struct watchdog_device *wdd, char *buf); 24 int 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 #endif 32 33 #else watchdog_register_pretimeout(struct watchdog_device * wdd)34static inline int watchdog_register_pretimeout(struct watchdog_device *wdd) 35 { 36 return 0; 37 } 38 watchdog_unregister_pretimeout(struct watchdog_device * wdd)39static inline void watchdog_unregister_pretimeout(struct watchdog_device *wdd) 40 { 41 } 42 watchdog_pretimeout_available_governors_get(char * buf)43static inline int watchdog_pretimeout_available_governors_get(char *buf) 44 { 45 return -EINVAL; 46 } 47 watchdog_pretimeout_governor_get(struct watchdog_device * wdd,char * buf)48static inline int watchdog_pretimeout_governor_get(struct watchdog_device *wdd, 49 char *buf) 50 { 51 return -EINVAL; 52 } 53 watchdog_pretimeout_governor_set(struct watchdog_device * wdd,const char * buf)54static inline int watchdog_pretimeout_governor_set(struct watchdog_device *wdd, 55 const char *buf) 56 { 57 return -EINVAL; 58 } 59 #endif 60 61 #endif 62