watchdog_pretimeout.h (1684B)
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 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#endif 32 33#else 34static 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#endif 60 61#endif