diff options
Diffstat (limited to 'source/module')
| -rw-r--r-- | source/module/monitor_kernel_lib.c | 22 | ||||
| -rw-r--r-- | source/module/monitor_trace.h | 9 |
2 files changed, 24 insertions, 7 deletions
diff --git a/source/module/monitor_kernel_lib.c b/source/module/monitor_kernel_lib.c index d962ca5..d85087e 100644 --- a/source/module/monitor_kernel_lib.c +++ b/source/module/monitor_kernel_lib.c @@ -132,13 +132,21 @@ static void push_tskinfo_2_buffer(variable_monitor_task *tsk_info, diag_variant_buffer_spin_unlock(&load_monitor_variant_buffer, *flags); } -static void push_tskinfo_22_buffer(variable_monitor_task *tsk_info, - unsigned long *flags) { - diag_variant_buffer_reserve(&load_monitor_variant_buffer, - sizeof(variable_monitor_task)); - diag_variant_buffer_write_nolock(&load_monitor_variant_buffer, tsk_info, - sizeof(variable_monitor_task)); - diag_variant_buffer_seal(&load_monitor_variant_buffer); +static void push_tskinfo_22_buffer(variable_monitor_task *tsk_info, unsigned long *flags){ + variable_monitor_task_system *tsk_info_system; + if (tsk_info->task.sys_task == 0) // system task + { + tsk_info_system = (variable_monitor_task_system *)tsk_info; + diag_variant_buffer_reserve(&load_monitor_variant_buffer, sizeof(variable_monitor_task_system)); + diag_variant_buffer_write_nolock(&load_monitor_variant_buffer, tsk_info_system, + sizeof(variable_monitor_task_system)); + diag_variant_buffer_seal(&load_monitor_variant_buffer); + } + else { + diag_variant_buffer_reserve(&load_monitor_variant_buffer, sizeof(variable_monitor_task)); + diag_variant_buffer_write_nolock(&load_monitor_variant_buffer, tsk_info, sizeof(variable_monitor_task)); + diag_variant_buffer_seal(&load_monitor_variant_buffer); + } } /// @brief clear all watch and reset kernel_wtimer_list/kernel_wtimer_num diff --git a/source/module/monitor_trace.h b/source/module/monitor_trace.h index 98edf9c..9ec2fe8 100644 --- a/source/module/monitor_trace.h +++ b/source/module/monitor_trace.h @@ -22,6 +22,7 @@ // dump type #define VARIABLE_MONITOR_RECORD_TYPE 0x0 #define VARIABLE_MONITOR_TASK_TYPE 0x1 +#define VARIABLE_MONITOR_TASK_TYPE_SYSTEM 0x2 typedef struct { pid_t task_id; // current process id @@ -103,6 +104,14 @@ typedef struct { } variable_monitor_task; // main struct typedef struct { + int et_type; + unsigned long id; + unsigned long long tv; + task_detail task; // brief + kern_stack_detail kern_stack; // kernel stack +} variable_monitor_task_system; + +typedef struct { struct radix_tree_root mm_tree; spinlock_t mm_tree_lock; } mm_tree; |
