diff options
| author | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2007-10-28 22:06:43 -0400 |
|---|---|---|
| committer | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2007-10-28 22:06:43 -0400 |
| commit | 8574756fb52c5feff4c552bdae6c2d8dfab4a0ba (patch) | |
| tree | a09bbc30cad8ebce184745dd19d48e2f2e989b39 /src | |
| parent | 63d82c5e16021d7ecdcb2716e092c326ef7f405f (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.c | 19 |
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 */ |
