summaryrefslogtreecommitdiff
path: root/source/module
diff options
context:
space:
mode:
Diffstat (limited to 'source/module')
-rw-r--r--source/module/monitor_kernel_lib.c22
-rw-r--r--source/module/monitor_trace.h9
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;