watchdog: add watchdog pretimeout governor framework
[platform/kernel/linux-starfive.git] / drivers / watchdog / watchdog_pretimeout.h
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_governor_get(struct watchdog_device *wdd, char *buf);
22
23 #else
24 static inline int watchdog_register_pretimeout(struct watchdog_device *wdd)
25 {
26         return 0;
27 }
28
29 static inline void watchdog_unregister_pretimeout(struct watchdog_device *wdd)
30 {
31 }
32
33 static inline int watchdog_pretimeout_governor_get(struct watchdog_device *wdd,
34                                                    char *buf)
35 {
36         return -EINVAL;
37 }
38 #endif
39
40 #endif