Merge git://www.linux-watchdog.org/linux-watchdog
[cascardo/linux.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_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