[sysprof/ftrace: 11/16] Eliminate SysprofStackTrace struct
- From: Søren Sandmann Pedersen <ssp src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [sysprof/ftrace: 11/16] Eliminate SysprofStackTrace struct
- Date: Fri, 14 Aug 2009 06:57:34 +0000 (UTC)
commit 7efe85f986252c484788ca43546552060b3e17c9
Author: Søren Sandmann Pedersen <sandmann daimi au dk>
Date: Fri Aug 14 02:08:43 2009 -0400
Eliminate SysprofStackTrace struct
collector.c | 77 ++++++++++++++++++++++++++++------------------------------
1 files changed, 37 insertions(+), 40 deletions(-)
---
diff --git a/collector.c b/collector.c
index de7d728..068c017 100644
--- a/collector.c
+++ b/collector.c
@@ -51,26 +51,23 @@ enum
typedef struct SysprofStackTrace SysprofStackTrace;
-#define SYSPROF_N_TRACES 64
-#define SYSPROF_MAX_ADDRESSES 126
+#define SYSPROF_N_TRACES 64
+#define SYSPROF_MAX_ADDRESSES 128
-struct SysprofStackTrace
-{
- void *kernel_stack[SYSPROF_MAX_ADDRESSES];
- void *addresses[SYSPROF_MAX_ADDRESSES];
- int n_kernel_words;
- int n_addresses; /* note: this can be 1 if the process was compiled
- * with -fomit-frame-pointer or is otherwise weird
- */
- int pid; /* -1 if in kernel */
- int truncated;
-};
-
struct CPUInfo
{
int user_pos;
int kernel_pos;
- SysprofStackTrace trace;
+ void * kernel_stack[SYSPROF_MAX_ADDRESSES];
+ void * addresses[SYSPROF_MAX_ADDRESSES];
+ int n_kernel_words;
+ int n_addresses; /* note: this can be 1 if the
+ * process was compiled
+ * with -fomit-frame-pointer or
+ * is otherwise weird
+ */
+ int pid;
+ int truncated;
};
struct Collector
@@ -125,12 +122,12 @@ time_diff (const GTimeVal *first,
#define RESET_DEAD_PERIOD 250
static void
-add_trace_to_stash (const SysprofStackTrace *trace,
- StackStash *stash)
+add_trace_to_stash (const CPUInfo *info,
+ StackStash *stash)
{
int i;
gulong *addrs;
- Process *process = process_get_from_pid (trace->pid);
+ Process *process = process_get_from_pid (info->pid);
int n_addresses;
int n_kernel_words;
int a;
@@ -138,8 +135,8 @@ add_trace_to_stash (const SysprofStackTrace *trace,
int n_alloc;
gboolean bad = FALSE;
- n_addresses = trace->n_addresses;
- n_kernel_words = trace->n_kernel_words;
+ n_addresses = info->n_addresses;
+ n_kernel_words = info->n_kernel_words;
n_alloc = n_addresses + n_kernel_words + 2;
if (n_alloc <= 2048)
@@ -149,11 +146,11 @@ add_trace_to_stash (const SysprofStackTrace *trace,
a = 0;
/* Add kernel addresses */
- if (trace->n_kernel_words)
+ if (info->n_kernel_words)
{
- for (i = 0; i < trace->n_kernel_words; ++i)
+ for (i = 0; i < info->n_kernel_words; ++i)
{
- gulong addr = (gulong)trace->kernel_stack[i];
+ gulong addr = (gulong)info->kernel_stack[i];
if (process_is_kernel_address (addr))
addrs[a++] = addr;
@@ -167,12 +164,12 @@ add_trace_to_stash (const SysprofStackTrace *trace,
for (i = 0; i < n_addresses; ++i)
{
- gulong addr = (gulong)trace->addresses[i];
+ gulong addr = (gulong)info->addresses[i];
- if (!process_ensure_map (process, trace->pid, addr))
+ if (!process_ensure_map (process, info->pid, addr))
{
g_print ("user address #%d, %p, was unmapped in %d (%d kernels)\n",
- i, (void *)addr, trace->pid, trace->n_kernel_words);
+ i, (void *)addr, info->pid, info->n_kernel_words);
bad = TRUE;
}
@@ -183,9 +180,9 @@ add_trace_to_stash (const SysprofStackTrace *trace,
{
g_print ("bad trace:\n");
- for (i = 0; i < trace->n_addresses; ++i)
+ for (i = 0; i < info->n_addresses; ++i)
{
- g_print (" %p\n", trace->addresses[i]);
+ g_print (" %p\n", info->addresses[i]);
}
}
@@ -300,7 +297,7 @@ find_cpu_info (Collector *collector, int pid)
for (i = 0; i < N_CPU; ++i)
{
- if (collector->cpu_info[i].trace.pid == pid)
+ if (collector->cpu_info[i].pid == pid)
return &(collector->cpu_info[i]);
}
@@ -324,8 +321,8 @@ process_entry (Collector *collector, Entry *entry)
case BEGIN_TRACE:
if ((info = find_cpu_info (collector, -1)))
{
- info->trace.pid = entry->pid;
- info->trace.truncated = FALSE;
+ info->pid = entry->pid;
+ info->truncated = FALSE;
info->user_pos = 0;
info->kernel_pos = 0;
}
@@ -335,9 +332,9 @@ process_entry (Collector *collector, Entry *entry)
if ((info = find_cpu_info (collector, entry->pid)))
{
if (info->kernel_pos < SYSPROF_MAX_ADDRESSES)
- info->trace.kernel_stack[info->kernel_pos++] = (void *)entry->address;
+ info->kernel_stack[info->kernel_pos++] = (void *)entry->address;
else
- info->trace.truncated = TRUE;
+ info->truncated = TRUE;
}
break;
@@ -345,23 +342,23 @@ process_entry (Collector *collector, Entry *entry)
if ((info = find_cpu_info (collector, entry->pid)))
{
if (info->user_pos < SYSPROF_MAX_ADDRESSES)
- info->trace.addresses[info->user_pos++] = (void *)entry->address;
+ info->addresses[info->user_pos++] = (void *)entry->address;
else
- info->trace.truncated = TRUE;
+ info->truncated = TRUE;
}
break;
case END_TRACE:
if ((info = find_cpu_info (collector, entry->pid)))
{
- info->trace.n_kernel_words = info->kernel_pos;
- info->trace.n_addresses = info->user_pos;
+ info->n_kernel_words = info->kernel_pos;
+ info->n_addresses = info->user_pos;
- add_trace_to_stash (&(info->trace), collector->stash);
+ add_trace_to_stash (info, collector->stash);
collector->n_samples++;
- info->trace.pid = -1;
+ info->pid = -1;
}
break;
@@ -476,7 +473,7 @@ start_tracing (Collector *collector,
collector->fd = fd;
for (i = 0; i < N_CPU; ++i)
- collector->cpu_info[i].trace.pid = -1;
+ collector->cpu_info[i].pid = -1;
return TRUE;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]