Implement tracker_add_sample()
authorSøren Sandmann Pedersen <ssp@redhat.com>
Mon, 7 Sep 2009 19:57:34 +0000 (15:57 -0400)
committerSøren Sandmann Pedersen <ssp@redhat.com>
Tue, 8 Sep 2009 07:03:00 +0000 (03:03 -0400)
tracker.c

index b5cbfe0..be475cb 100644 (file)
--- a/tracker.c
+++ b/tracker.c
@@ -8,6 +8,15 @@ typedef struct new_process_t new_process_t;
 typedef struct new_map_t new_map_t;
 typedef struct sample_t sample_t;
 
+struct tracker_t
+{
+    StackStash *stash;
+    
+    size_t      n_event_bytes;
+    size_t      n_allocated_bytes;
+    uint8_t    *events;
+};
+
 typedef enum
 {
     NEW_PROCESS,
@@ -40,13 +49,6 @@ struct sample_t
     StackNode *        trace;
 };
 
-struct tracker_t
-{
-    size_t      n_event_bytes;
-    size_t      n_allocated_bytes;
-    uint8_t    *events;
-};
-
 #define DEFAULT_SIZE   (1024 * 1024 * 4)
 
 static void
@@ -137,6 +139,13 @@ tracker_add_sample  (tracker_t *tracker,
                     uint64_t  *ips,
                     int        n_ips)
 {
+    sample_t event;
+
+    event.type = SAMPLE;
+    event.pid = pid;
+    event.trace = stack_stash_add_trace (tracker->stash, ips, n_ips, 1);
+
+    tracker_append (tracker, &event, sizeof (event));
 }
 
 Profile *