Linux Audio
Check our new training course
Embedded Linux Audio
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
/* 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