Commit | Line | Data |
---|---|---|
6ff1cb35 AM |
1 | #ifndef _LINUX_FAULT_INJECT_H |
2 | #define _LINUX_FAULT_INJECT_H | |
3 | ||
4 | #ifdef CONFIG_FAULT_INJECTION | |
5 | ||
6 | #include <linux/types.h> | |
7 | #include <linux/debugfs.h> | |
6adc4a22 | 8 | #include <linux/ratelimit.h> |
60063497 | 9 | #include <linux/atomic.h> |
6ff1cb35 AM |
10 | |
11 | /* | |
12 | * For explanation of the elements of this struct, see | |
13 | * Documentation/fault-injection/fault-injection.txt | |
14 | */ | |
15 | struct fault_attr { | |
16 | unsigned long probability; | |
17 | unsigned long interval; | |
18 | atomic_t times; | |
19 | atomic_t space; | |
20 | unsigned long verbose; | |
621a5f7a | 21 | bool task_filter; |
329409ae AM |
22 | unsigned long stacktrace_depth; |
23 | unsigned long require_start; | |
24 | unsigned long require_end; | |
25 | unsigned long reject_start; | |
26 | unsigned long reject_end; | |
6ff1cb35 AM |
27 | |
28 | unsigned long count; | |
6adc4a22 DM |
29 | struct ratelimit_state ratelimit_state; |
30 | struct dentry *dname; | |
6ff1cb35 AM |
31 | }; |
32 | ||
6adc4a22 DM |
33 | #define FAULT_ATTR_INITIALIZER { \ |
34 | .interval = 1, \ | |
35 | .times = ATOMIC_INIT(1), \ | |
36 | .require_end = ULONG_MAX, \ | |
37 | .stacktrace_depth = 32, \ | |
38 | .ratelimit_state = RATELIMIT_STATE_INIT_DISABLED, \ | |
39 | .verbose = 2, \ | |
40 | .dname = NULL, \ | |
6ff1cb35 AM |
41 | } |
42 | ||
43 | #define DECLARE_FAULT_ATTR(name) struct fault_attr name = FAULT_ATTR_INITIALIZER | |
44 | int setup_fault_attr(struct fault_attr *attr, char *str); | |
08b3df2d | 45 | bool should_fail(struct fault_attr *attr, ssize_t size); |
6ff1cb35 AM |
46 | |
47 | #ifdef CONFIG_FAULT_INJECTION_DEBUG_FS | |
48 | ||
dd48c085 AM |
49 | struct dentry *fault_create_debugfs_attr(const char *name, |
50 | struct dentry *parent, struct fault_attr *attr); | |
6ff1cb35 AM |
51 | |
52 | #else /* CONFIG_FAULT_INJECTION_DEBUG_FS */ | |
53 | ||
dd48c085 AM |
54 | static inline struct dentry *fault_create_debugfs_attr(const char *name, |
55 | struct dentry *parent, struct fault_attr *attr) | |
6ff1cb35 | 56 | { |
dd48c085 | 57 | return ERR_PTR(-ENODEV); |
6ff1cb35 AM |
58 | } |
59 | ||
60 | #endif /* CONFIG_FAULT_INJECTION_DEBUG_FS */ | |
61 | ||
62 | #endif /* CONFIG_FAULT_INJECTION */ | |
63 | ||
773ff60e | 64 | #ifdef CONFIG_FAILSLAB |
fab9963a | 65 | extern bool should_failslab(struct kmem_cache *s, gfp_t gfpflags); |
773ff60e | 66 | #else |
fab9963a | 67 | static inline bool should_failslab(struct kmem_cache *s, gfp_t gfpflags) |
773ff60e AM |
68 | { |
69 | return false; | |
70 | } | |
71 | #endif /* CONFIG_FAILSLAB */ | |
72 | ||
6ff1cb35 | 73 | #endif /* _LINUX_FAULT_INJECT_H */ |