diff --git a/source/module/monitor_kernel_lib.c b/source/module/monitor_kernel_lib.c index bc261a7..d962ca5 100644 --- a/source/module/monitor_kernel_lib.c +++ b/source/module/monitor_kernel_lib.c @@ -132,6 +132,15 @@ 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); +} + /// @brief clear all watch and reset kernel_wtimer_list/kernel_wtimer_num /// @param static void clear_all_watch(void) { @@ -193,16 +202,15 @@ void diag_task_info_work(struct work_struct *work) { } rcu_read_lock(); - diag_variant_buffer_spin_lock(&load_monitor_variant_buffer, flags); + diag_variant_buffer_reserve(&load_monitor_variant_buffer, sizeof(variable_monitor_record)); diag_variant_buffer_write_nolock(&load_monitor_variant_buffer, &vm_record, sizeof(variable_monitor_record)); diag_variant_buffer_seal(&load_monitor_variant_buffer); - diag_variant_buffer_spin_unlock(&load_monitor_variant_buffer, flags); + // diag_variant_buffer_spin_unlock(&load_monitor_variant_buffer, flags); - rcu_read_unlock(); // for task info do_each_thread(g, p) { if (p->__state == TASK_RUNNING || __task_contributes_to_load(p) || @@ -217,10 +225,14 @@ void diag_task_info_work(struct work_struct *work) { put_task_struct(p); // count -1 - push_tskinfo_2_buffer(&tsk_info, &flags); // push to buffer + push_tskinfo_22_buffer(&tsk_info, &flags); // push to buffer } } while_each_thread(g, p); + + diag_variant_buffer_spin_unlock(&load_monitor_variant_buffer, flags); + rcu_read_unlock(); + printk(KERN_INFO "-------------------------------------\n"); return; }