[sysprof/ftrace: 11/16] Eliminate SysprofStackTrace struct



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]