diff --git a/source/module/monitor_trace.h b/source/module/monitor_trace.h index 7930a04..501add1 100644 --- a/source/module/monitor_trace.h +++ b/source/module/monitor_trace.h @@ -14,6 +14,8 @@ #define MAX_NAME_LEN (15) // max name length #define TIMER_MAX_WATCH_NUM (32) // A timer max watch number at once time +#define DIAG_USER_STACK_SIZE (16 * 1024) + typedef struct { pid_t task_id; // current process id char name[MAX_NAME_LEN + 1]; // name @@ -65,6 +67,15 @@ typedef struct { unsigned long stack[BACKTRACE_DEPTH]; } user_stack_detail; +typedef struct { + struct pt_regs regs; + unsigned long ip; + unsigned long bp; + unsigned long sp; + unsigned long stack_size; + unsigned long stack[DIAG_USER_STACK_SIZE / sizeof(unsigned long)]; +} raw_stack_detail; + typedef struct { unsigned int full_argv[PROCESS_CHAINS_COUNT]; // char chains[PROCESS_CHAINS_COUNT][PROCESS_ARGV_LEN]; // process chains argv @@ -78,6 +89,7 @@ typedef struct { unsigned long long tv; task_detail task; // brief user_stack_detail user_stack; // user stack + raw_stack_detail raw_stack; kern_stack_detail kern_stack; // kernel stack proc_chains_detail proc_chains; // process chains argv } variable_monitor_task;