From edaad0938c3fa53fb492a5cf4f0927b3639a28aa Mon Sep 17 00:00:00 2001 From: compudj Date: Fri, 16 Dec 2005 02:50:59 +0000 Subject: [PATCH] make changes for support between 64/32 bits architectures git-svn-id: http://ltt.polymtl.ca/svn@1391 04897980-b3bd-0310-b5e0-8ef037075253 --- ltt/branches/poly-0.7.0/ltt/ltt-private.h | 32 ++++++++++++++++++++--- ltt/branches/poly-0.7.0/ltt/tracefile.c | 25 ++++++++++++++++++ 2 files changed, 54 insertions(+), 3 deletions(-) diff --git a/ltt/branches/poly-0.7.0/ltt/ltt-private.h b/ltt/branches/poly-0.7.0/ltt/ltt-private.h index 666f1f33..456ce95f 100644 --- a/ltt/branches/poly-0.7.0/ltt/ltt-private.h +++ b/ltt/branches/poly-0.7.0/ltt/ltt-private.h @@ -187,18 +187,44 @@ struct ltt_trace_header_0_4 { uint64_t start_freq; uint64_t start_tsc; uint64_t start_monotonic; - struct timespec start_time; + struct timespec start_time; // not portable +} LTT_PACKED_STRUCT; + +/* For version 0.5 */ + +struct ltt_trace_header_0_5 { + uint32_t magic_number; + uint32_t arch_type; + uint32_t arch_variant; + uint32_t float_word_order; + uint8_t arch_size; + uint8_t major_version; + uint8_t minor_version; + uint8_t flight_recorder; + uint8_t has_heartbeat; + uint8_t has_alignment; /* Event header alignment */ + uint8_t has_tsc; + uint64_t start_freq; + uint64_t start_tsc; + uint64_t start_monotonic; + //struct timespec start_time; // not portable + uint64_t start_time_sec; + uint64_t start_time_usec; } LTT_PACKED_STRUCT; struct ltt_block_start_header { struct { - struct timeval timestamp; + //struct timeval timestamp; + uint64_t timestamp_sec; + uint64_t timestamp_usec; uint64_t cycle_count; uint64_t freq; } begin; struct { - struct timeval timestamp; + //struct timeval timestamp; + uint64_t timestamp_sec; + uint64_t timestamp_usec; uint64_t cycle_count; uint64_t freq; } end; diff --git a/ltt/branches/poly-0.7.0/ltt/tracefile.c b/ltt/branches/poly-0.7.0/ltt/tracefile.c index 7f76f014..53aea9c9 100644 --- a/ltt/branches/poly-0.7.0/ltt/tracefile.c +++ b/ltt/branches/poly-0.7.0/ltt/tracefile.c @@ -266,6 +266,31 @@ int parse_trace_header(void *header, LttTracefile *tf, LttTrace *t) } } break; + case 5: + { + struct ltt_trace_header_0_5 *vheader = + (struct ltt_trace_header_0_5 *)header; + tf->buffer_header_size = + sizeof(struct ltt_block_start_header) + + sizeof(struct ltt_trace_header_0_5); + if(t) { + t->start_freq = ltt_get_uint64(LTT_GET_BO(tf), + &vheader->start_freq); + t->start_tsc = ltt_get_uint64(LTT_GET_BO(tf), + &vheader->start_tsc); + t->start_monotonic = ltt_get_uint64(LTT_GET_BO(tf), + &vheader->start_monotonic); + t->start_time.tv_sec = ltt_get_uint64(LTT_GET_BO(tf), + &vheader->start_time_sec); + t->start_time.tv_nsec = ltt_get_uint64(LTT_GET_BO(tf), + &vheader->start_time_usec); + t->start_time.tv_nsec *= 1000; /* microsec to nanosec */ + + t->start_time_from_tsc = ltt_time_from_uint64( + (double)t->start_tsc * 1000000.0 / (double)t->start_freq); + } + } + break; default: g_warning("Unsupported trace version : %hhu.%hhu", any->major_version, any->minor_version); -- 2.34.1