1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | #include <linux/mutex.h> |
3 | |
4 | struct rv_interface { |
5 | struct dentry *root_dir; |
6 | struct dentry *monitors_dir; |
7 | }; |
8 | |
9 | #include "../trace.h" |
10 | #include <linux/tracefs.h> |
11 | #include <linux/rv.h> |
12 | |
13 | #define RV_MODE_WRITE TRACE_MODE_WRITE |
14 | #define RV_MODE_READ TRACE_MODE_READ |
15 | |
16 | #define rv_create_dir tracefs_create_dir |
17 | #define rv_create_file tracefs_create_file |
18 | #define rv_remove tracefs_remove |
19 | |
20 | #define MAX_RV_MONITOR_NAME_SIZE 32 |
21 | #define MAX_RV_REACTOR_NAME_SIZE 32 |
22 | |
23 | extern struct mutex rv_interface_lock; |
24 | |
25 | #ifdef CONFIG_RV_REACTORS |
26 | struct rv_reactor_def { |
27 | struct list_head list; |
28 | struct rv_reactor *reactor; |
29 | /* protected by the monitor interface lock */ |
30 | int counter; |
31 | }; |
32 | #endif |
33 | |
34 | struct rv_monitor_def { |
35 | struct list_head list; |
36 | struct rv_monitor *monitor; |
37 | struct dentry *root_d; |
38 | #ifdef CONFIG_RV_REACTORS |
39 | struct rv_reactor_def *rdef; |
40 | bool reacting; |
41 | #endif |
42 | bool task_monitor; |
43 | }; |
44 | |
45 | struct dentry *get_monitors_root(void); |
46 | int rv_disable_monitor(struct rv_monitor_def *mdef); |
47 | int rv_enable_monitor(struct rv_monitor_def *mdef); |
48 | |
49 | #ifdef CONFIG_RV_REACTORS |
50 | int reactor_populate_monitor(struct rv_monitor_def *mdef); |
51 | void reactor_cleanup_monitor(struct rv_monitor_def *mdef); |
52 | int init_rv_reactors(struct dentry *root_dir); |
53 | #else |
54 | static inline int reactor_populate_monitor(struct rv_monitor_def *mdef) |
55 | { |
56 | return 0; |
57 | } |
58 | |
59 | static inline void reactor_cleanup_monitor(struct rv_monitor_def *mdef) |
60 | { |
61 | return; |
62 | } |
63 | |
64 | static inline int init_rv_reactors(struct dentry *root_dir) |
65 | { |
66 | return 0; |
67 | } |
68 | #endif |
69 | |