#include "monitor_kallsyms.h" #include "monitor_mem.h" #include "monitor_proc.h" #include "monitor_timer.h" #include "monitor_trace.h" #include "monitor_perf.h" #include // for ioctl // ioctl #define IOCTL_MAGIC_NUMBER 'k' #define IOCTL_WATCH_VARIABLE 0 #define IOCTL_DUMP_LOG 1 #define IOCTL_PID _IOWR(IOCTL_MAGIC_NUMBER, 2, int) #define IOCTL_TGID _IOWR(IOCTL_MAGIC_NUMBER, 3, int) #define IOCTL_DUMP_LOG_SA _IOWR(IOCTL_MAGIC_NUMBER, 4, int) // default value extern int def_interval_ns; extern int dump_reset_sec; extern mm_tree mm_tree_struct; extern struct diag_variant_buffer load_monitor_variant_buffer; // global buffer #define VARIABLE_MONITOR_BUFFER_SIZE 256 * 1024 * 1024 // 256MB extern struct diag_variant_buffer stand_alone_buffer; // buffer for single work #define STAND_ALONE_BUFFER_SIZE 50 * 1024 * 1024 // 50 MB // for buffer int dump_log(ioctl_dump_param *dump_param, unsigned long ioctl_param, struct diag_variant_buffer *buffer); int monitor_init(void); // monitor init void monitor_exit(void); // monitor exit int start_watch_variable(watch_arg warg); // for open void clear_watch(pid_t pid); // for release enum hrtimer_restart check_variable_cb(struct hrtimer *timer); // hrtimer callback // for test int diag_pid(int id); // for test int diag_tgid(int id); // for test void diag_task(kernel_watch_timer *k_watch_timer); void diag_task_all(void); void diag_task_by_tgid(pid_t tgid);