summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/module/monitor_perf.c58
-rw-r--r--source/ucli/ucli.cc1
2 files changed, 30 insertions, 29 deletions
diff --git a/source/module/monitor_perf.c b/source/module/monitor_perf.c
index 76df6f3..b91b930 100644
--- a/source/module/monitor_perf.c
+++ b/source/module/monitor_perf.c
@@ -47,7 +47,7 @@ struct perf_event_attr pea = {
.config = PERF_COUNT_SW_DUMMY,
.sample_period = 1,
.sample_type = PERF_SAMPLE_CALLCHAIN,
- .disabled = 1,
+ // .disabled = 1,
};
#include <linux/cpumask.h>
@@ -63,38 +63,38 @@ void setup_perf_event_for_task(struct task_struct *tsk) {
pr_info("Perf event already created\n");
return;
}
- // int cpu;
- // struct perf_event **events;
- // for_each_possible_cpu(cpu) {
- // struct perf_event **event = per_cpu_ptr(events, cpu);
- // if (cpu_is_offline(cpu)) {
- // pr_info("cpu %d is offline\n", cpu);
- // *event = NULL;
- // continue;
- // }
- // *event = perf_event_create_kernel_counter(&pea, cpu, tsk,
- // vm_perf_overflow_callback, NULL);
+ int cpu;
+ struct perf_event **events;
+ for_each_possible_cpu(cpu) {
+ struct perf_event **event = per_cpu_ptr(events, cpu);
+ if (cpu_is_offline(cpu)) {
+ pr_info("cpu %d is offline\n", cpu);
+ *event = NULL;
+ continue;
+ }
+ *event = perf_event_create_kernel_counter(&pea, cpu, tsk,
+ vm_perf_overflow_callback, NULL);
- // // perf_event_create_kernel_counter(&pea, cpu, tsk,
- // // vm_perf_overflow_callback,
- // // NULL);
- // if (IS_ERR(*event)) {
- // printk(KERN_INFO "create perf event failure\n");
- // // return -1;
- // }
- // // perf_event_enable(*event);
- // }
+ // perf_event_create_kernel_counter(&pea, cpu, tsk,
+ // vm_perf_overflow_callback,
+ // NULL);
+ if (IS_ERR(*event)) {
+ printk(KERN_INFO "create perf event failure\n");
+ // return -1;
+ }
+ // perf_event_enable(*event);
+ }
// pe = perf_event_create_kernel_counter(&pea, tsk->on_cpu, tsk,
- // vm_perf_callback, NULL);
- pe = perf_event_create_kernel_counter(&pea, -1, tsk,
- vm_perf_overflow_callback, NULL);
- if (IS_ERR(pe)) {
- pr_info("Error in perf_event_create_kernel_counter\n");
- return;
- }
+ // vm_perf_overflow_callback, NULL);
+ // // pe = perf_event_create_kernel_counter(&pea, -1, tsk,
+ // // vm_perf_overflow_callback, NULL);
+ // if (IS_ERR(pe)) {
+ // pr_info("Error in perf_event_create_kernel_counter\n");
+ // return;
+ // }
- perf_event_enable(pe); // enable perf event
+ // perf_event_enable(pe); // enable perf event
}
/**
diff --git a/source/ucli/ucli.cc b/source/ucli/ucli.cc
index fa26448..26ff444 100644
--- a/source/ucli/ucli.cc
+++ b/source/ucli/ucli.cc
@@ -83,6 +83,7 @@ static int task_info_extract(void *buf, unsigned int len, void *) {
diag_printf_kern_stack(&tsk_info_system->kern_stack);
printf("#* 0xffffffffffffff %s (UNKNOWN)\n",
tsk_info_system->task.comm);
+ diag_printf_proc_chains(&tsk_info->proc_chains);
printf("##\n");
break;