aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBjoern B. Brandenburg <bbb@cs.unc.edu>2007-10-28 22:06:43 -0400
committerBjoern B. Brandenburg <bbb@cs.unc.edu>2007-10-28 22:06:43 -0400
commit8574756fb52c5feff4c552bdae6c2d8dfab4a0ba (patch)
treea09bbc30cad8ebce184745dd19d48e2f2e989b39 /src
parent63d82c5e16021d7ecdcb2716e092c326ef7f405f (diff)
sched_trace: update format
Update to new format and fix a couple of bugs.
Diffstat (limited to 'src')
-rw-r--r--src/sched_trace.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/sched_trace.c b/src/sched_trace.c
index 5dfbba4..18969bd 100644
--- a/src/sched_trace.c
+++ b/src/sched_trace.c
@@ -16,7 +16,7 @@ int walk_sched_trace(void* start, void* end, record_callback_t *cb)
16{ 16{
17 void* pos = start; 17 void* pos = start;
18 trace_header_t* header; 18 trace_header_t* header;
19 int ret; 19 int ret = 0;
20 20
21 while (pos < end) { 21 while (pos < end) {
22 header = (trace_header_t*) pos; 22 header = (trace_header_t*) pos;
@@ -36,7 +36,7 @@ int walk_sched_traces_ordered(void** start, void** end, unsigned int count,
36{ 36{
37 void** pos; 37 void** pos;
38 trace_header_t* header; 38 trace_header_t* header;
39 int ret, i, adv; 39 int ret = 0, i, adv;
40 40
41 pos = malloc(sizeof(void*) * count); 41 pos = malloc(sizeof(void*) * count);
42 42
@@ -51,9 +51,12 @@ int walk_sched_traces_ordered(void** start, void** end, unsigned int count,
51 ((trace_header_t*) pos[i])->timestamp)) { 51 ((trace_header_t*) pos[i])->timestamp)) {
52 header = (trace_header_t*) pos[i]; 52 header = (trace_header_t*) pos[i];
53 adv = i; 53 adv = i;
54 } 54 }
55 if (header) { 55 if (header) {
56 pos[i] += header->size; 56 pos[adv] += header->size;
57/* printf("header id: %d pos=%p adv=%d\n",
58 header->trace, pos[adv], adv);
59*/
57 if (header->trace >= ST_MAX) 60 if (header->trace >= ST_MAX)
58 return INVALID_HEADER; 61 return INVALID_HEADER;
59 if (cb->handler[header->trace]) 62 if (cb->handler[header->trace])
@@ -124,16 +127,20 @@ int walk_sched_trace_files_ordered(const char** names, unsigned int count,
124 void **start, **end; 127 void **start, **end;
125 size_t *size; 128 size_t *size;
126 int i; 129 int i;
127 int ret; 130 int ret = 0;
128 131
132/* printf("count=%d\n", count); */
133
129 start = malloc(sizeof(void*) * count); 134 start = malloc(sizeof(void*) * count);
130 end = malloc(sizeof(void*) * count); 135 end = malloc(sizeof(void*) * count);
131 size = malloc(sizeof(size_t) * count); 136 size = malloc(sizeof(size_t) * count);
132 137
133 for (i = 0; i < count; i++) 138 for (i = 0; i < count; i++)
134 size[i] = 0; 139 size[i] = 0;
135 for (i = 0; i < count && !ret; i++) 140 for (i = 0; i < count && !ret; i++) {
141/* printf("mapping %s\n", names[i]); */
136 ret = map_trace(names[i], start + i, end + i, size + i); 142 ret = map_trace(names[i], start + i, end + i, size + i);
143 }
137 144
138 if (!ret) 145 if (!ret)
139 /* everything mapped, now walk it */ 146 /* everything mapped, now walk it */