guint32 has_alignment;
} LTT_PACKED_STRUCT;
+/* Empty event */
typedef struct _TimeHeartbeat {
- LttTime time; //Time stamp of this block
- uint64_t cycle_count; //cycle count of the event
} LTT_PACKED_STRUCT TimeHeartbeat;
struct ltt_event_header_hb {
GHashTable *enum_map; //maps enum labels to numbers.
GArray *fields; // Array of LttFields, for array, sequence, union, struct.
GData *fields_by_name;
+ guint network; // Is the type in network byte order ?
};
struct _LttEventType{
GQuark long_name; //tracefile complete filename
GQuark name; //tracefile name
guint cpu_num; //cpu number of the tracefile
+ guint tid; //Usertrace tid, else 0
+ guint pgid; //Usertrace pgid, else 0
+ guint64 creation; //Usertrace creation, else 0
LttTrace * trace; //trace containing the tracefile
int fd; //file descriptor
off_t file_size; //file size
//#define EVENT_HEADER_SIZE (TIMESTAMP_SIZE + EVENT_ID_SIZE)
+off_t get_alignment(LttField *field);
+
/* Calculate the offset needed to align the type.
* If has_alignment is 0, alignment is disactivated.
* else, the function returns the offset needed to
* align align_drift on the has_alignment value (should be
* the size of the architecture). */
static inline unsigned int ltt_align(size_t align_drift,
- size_t size_of_type,
- size_t has_alignment)
+ size_t size_of_type,
+ size_t has_alignment)
{
size_t alignment = min(has_alignment, size_of_type);
if(!has_alignment) return 0;
+ g_assert(size_of_type != 0);
return ((alignment - align_drift) & (alignment-1));
}