From 77e836d347b42d62b0791bd7aea8219b968387e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Sandmann=20Pedersen?= Date: Sun, 21 Nov 2004 22:46:00 +0000 Subject: [PATCH] Sample all running tasks, not just current --- sysprof-module.c | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/sysprof-module.c b/sysprof-module.c index 4a893e9d..65df9f53 100644 --- a/sysprof-module.c +++ b/sysprof-module.c @@ -272,17 +272,18 @@ do_generate (void *data) in_queue = 0; /* Make sure the task still exists */ - for_each_process (p) - if (p == task) - goto go_ahead; - return; + for_each_process (p) { + if (p == task) { + generate_stack_trace(task, head); - go_ahead: - generate_stack_trace(task, head); - if (head++ == &stack_traces[N_TRACES - 1]) - head = &stack_traces[0]; - - wake_up (&wait_for_trace); + if (head++ == &stack_traces[N_TRACES - 1]) + head = &stack_traces[0]; + + wake_up (&wait_for_trace); + + return; + } + } } static void @@ -301,13 +302,12 @@ queue_generate_stack_trace (struct task_struct *cur) static void on_timer(unsigned long dong) { - static int n_ticks = 0; - task_t *task = current; - - ++n_ticks; - - if (task && task->pid != 0) - queue_generate_stack_trace (task); + struct task_struct *p; + + for_each_process (p) { + if (p->state == TASK_RUNNING) + queue_generate_stack_trace (p); + } add_timeout (INTERVAL, on_timer); }