X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Fltt%2Fevent.c;h=a5b046814027e30f74b3f9410518a85284cebdb0;hb=3054461acbbd00cc70e9e3046050f074e9eec4c9;hp=8b22b472d7fed928ee669a06475d0d195adbfc14;hpb=27304273a482c99620e992daf3826eb61208fd4b;p=lttv.git diff --git a/ltt/branches/poly/ltt/event.c b/ltt/branches/poly/ltt/event.c index 8b22b472..a5b04681 100644 --- a/ltt/branches/poly/ltt/event.c +++ b/ltt/branches/poly/ltt/event.c @@ -26,7 +26,7 @@ #include #include -#include +#include #include "parser.h" #include @@ -571,7 +571,8 @@ guint64 ltt_event_get_long_unsigned(LttEvent *e, LttField *f) LttTypeEnum t = f->field_type->type_class; - g_assert(t == LTT_UINT || t == LTT_ENUM); + g_assert(t == LTT_UINT || t == LTT_ENUM + || t == LTT_ULONG || LTT_SIZE_T || LTT_OFF_T || LTT_POINTER); if(f->field_size == 1){ guint8 x = *(guint8 *)(e->data + f->offset_root); @@ -593,7 +594,9 @@ gint64 ltt_event_get_long_int(LttEvent *e, LttField *f) // e->tracefile->trace->system_description->endian ? 0:1; gboolean reverse_byte_order = LTT_GET_BO(e->tracefile); - g_assert( f->field_type->type_class == LTT_INT); + g_assert( f->field_type->type_class == LTT_INT + || f->field_type->type_class == LTT_LONG + || f->field_type->type_class == LTT_SSIZE_T); if(f->field_size == 1){ gint8 x = *(gint8 *)(e->data + f->offset_root); @@ -611,31 +614,31 @@ gint64 ltt_event_get_long_int(LttEvent *e, LttField *f) float ltt_event_get_float(LttEvent *e, LttField *f) { - gboolean reverse_byte_order = LTT_GET_BO(e->tracefile); + g_assert(LTT_HAS_FLOAT(e->tracefile)); + gboolean reverse_byte_order = LTT_GET_FLOAT_BO(e->tracefile); g_assert(f->field_type->type_class == LTT_FLOAT && f->field_size == 4); if(reverse_byte_order == 0) return *(float *)(e->data + f->offset_root); else{ - guint32 aInt; - memcpy((void*)&aInt, e->data + f->offset_root, 4); - aInt = ___swab32(aInt); - return ((float)aInt); + void *ptr = e->data + f->offset_root; + guint32 value = bswap_32(*(guint32*)ptr); + return *(float*)&value; } } double ltt_event_get_double(LttEvent *e, LttField *f) { - gboolean reverse_byte_order = LTT_GET_BO(e->tracefile); + g_assert(LTT_HAS_FLOAT(e->tracefile)); + gboolean reverse_byte_order = LTT_GET_FLOAT_BO(e->tracefile); g_assert(f->field_type->type_class == LTT_FLOAT && f->field_size == 8); if(reverse_byte_order == 0) return *(double *)(e->data + f->offset_root); - else{ - guint64 aInt; - memcpy((void*)&aInt, e->data + f->offset_root, 8); - aInt = ___swab64(aInt); - return ((double)aInt); + else { + void *ptr = e->data + f->offset_root; + guint64 value = bswap_64(*(guint64*)ptr); + return *(double*)&value; } }