| /* SPDX-License-Identifier: GPL-2.0 */ |
| #include <linux/mutex.h> |
| |
| struct rv_interface { |
| struct dentry *root_dir; |
| struct dentry *monitors_dir; |
| }; |
| |
| #include "../trace.h" |
| #include <linux/tracefs.h> |
| #include <linux/rv.h> |
| |
| #define RV_MODE_WRITE TRACE_MODE_WRITE |
| #define RV_MODE_READ TRACE_MODE_READ |
| |
| #define rv_create_dir tracefs_create_dir |
| #define rv_create_file tracefs_create_file |
| #define rv_remove tracefs_remove |
| |
| #define MAX_RV_MONITOR_NAME_SIZE 32 |
| #define MAX_RV_REACTOR_NAME_SIZE 32 |
| |
| extern struct mutex rv_interface_lock; |
| |
| #ifdef CONFIG_RV_REACTORS |
| struct rv_reactor_def { |
| struct list_head list; |
| struct rv_reactor *reactor; |
| /* protected by the monitor interface lock */ |
| int counter; |
| }; |
| #endif |
| |
| struct rv_monitor_def { |
| struct list_head list; |
| struct rv_monitor *monitor; |
| struct dentry *root_d; |
| #ifdef CONFIG_RV_REACTORS |
| struct rv_reactor_def *rdef; |
| bool reacting; |
| #endif |
| bool task_monitor; |
| }; |
| |
| struct dentry *get_monitors_root(void); |
| int rv_disable_monitor(struct rv_monitor_def *mdef); |
| int rv_enable_monitor(struct rv_monitor_def *mdef); |
| |
| #ifdef CONFIG_RV_REACTORS |
| int reactor_populate_monitor(struct rv_monitor_def *mdef); |
| void reactor_cleanup_monitor(struct rv_monitor_def *mdef); |
| int init_rv_reactors(struct dentry *root_dir); |
| #else |
| static inline int reactor_populate_monitor(struct rv_monitor_def *mdef) |
| { |
| return 0; |
| } |
| |
| static inline void reactor_cleanup_monitor(struct rv_monitor_def *mdef) |
| { |
| return; |
| } |
| |
| static inline int init_rv_reactors(struct dentry *root_dir) |
| { |
| return 0; |
| } |
| #endif |