X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Fltt%2Ftrace.h;h=05a8133caacf56f7ab4c5ee779043ff60ee40b49;hb=91f8d488607f78334aee6fda44668b0b4377c2a5;hp=7736d8f30ad49831da2c150ca3b30dd43c6e86a9;hpb=826f1ab264718e5e4c6b101557cd205422d3d20b;p=lttv.git diff --git a/ltt/branches/poly/ltt/trace.h b/ltt/branches/poly/ltt/trace.h index 7736d8f3..05a8133c 100644 --- a/ltt/branches/poly/ltt/trace.h +++ b/ltt/branches/poly/ltt/trace.h @@ -1,5 +1,6 @@ /* This file is part of the Linux Trace Toolkit trace reading library * Copyright (C) 2003-2004 Michel Dagenais + * 2005 Mathieu Desnoyers * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -20,9 +21,40 @@ #define TRACE_H #include +#include +#include + +struct LttTrace { + GQuark pathname; //the pathname of the trace + //LttSystemDescription * system_description;//system description + + guint num_cpu; + + guint32 arch_type; + guint32 arch_variant; + guint8 arch_size; + guint8 ltt_major_version; + guint8 ltt_minor_version; + guint8 flight_recorder; + guint32 freq_scale; + uint64_t start_freq; + uint64_t start_tsc; + uint64_t start_monotonic; + LttTime start_time; + LttTime start_time_from_tsc; + uint8_t compact_event_bits; + + GData *tracefiles; //tracefiles groups + /* Support for markers */ + GArray *markers; //indexed by marker ID + GHashTable *markers_hash; //indexed by name hash +}; + + extern GQuark LTT_FACILITY_NAME_HEARTBEAT, - LTT_EVENT_NAME_HEARTBEAT; + LTT_EVENT_NAME_HEARTBEAT, + LTT_EVENT_NAME_HEARTBEAT_FULL; /* A trace is specified as a pathname to the directory containing all the associated data (control tracefiles, per cpu tracefiles, event @@ -47,6 +79,7 @@ GQuark ltt_trace_name(const LttTrace *t); void ltt_trace_close(LttTrace *t); +guint ltt_trace_get_num_cpu(LttTrace *t); LttSystemDescription *ltt_trace_system_description(LttTrace *t); @@ -56,20 +89,18 @@ LttSystemDescription *ltt_trace_system_description(LttTrace *t); versions of a facility (same name, different checksum) have consecutive positions. */ -unsigned ltt_trace_facility_number(LttTrace *t); +//unsigned ltt_trace_facility_number(LttTrace *t); -LttFacility *ltt_trace_facility_get(LttTrace *t, unsigned i); - -LttFacility * ltt_trace_facility_by_id(LttTrace * trace, guint8 id); +//LttFacility * ltt_trace_facility_by_id(LttTrace * trace, guint8 id); /* Returns an array of indexes (guint) that matches the facility name */ -GArray *ltt_trace_facility_get_by_name(LttTrace *t, GQuark name); +//GArray *ltt_trace_facility_get_by_name(LttTrace *t, GQuark name); /* Functions to discover all the event types in the trace */ -unsigned ltt_trace_eventtype_number(LttTrace *t); +//unsigned ltt_trace_eventtype_number(LttTrace *t); -LttEventType *ltt_trace_eventtype_get(LttTrace *t, unsigned i); +//LttEventType *ltt_trace_eventtype_get(LttTrace *t, unsigned i); /* Get the start time and end time of the trace */ @@ -79,11 +110,18 @@ void ltt_trace_time_span_get(LttTrace *t, LttTime *start, LttTime *end); /* Get the name of a tracefile */ -GQuark ltt_tracefile_name(LttTracefile *tf); +GQuark ltt_tracefile_name(const LttTracefile *tf); +GQuark ltt_tracefile_long_name(const LttTracefile *tf); /* get the cpu number of the tracefile */ -guint ltt_tracefile_num(LttTracefile *tf); +guint ltt_tracefile_cpu(LttTracefile *tf); + +/* For usertrace */ +guint ltt_tracefile_tid(LttTracefile *tf); +guint ltt_tracefile_pgid(LttTracefile *tf); +guint64 ltt_tracefile_creation(LttTracefile *tf); + LttTrace *ltt_tracefile_get_trace(LttTracefile *tf); @@ -139,9 +177,13 @@ gchar * ltt_trace_system_description_domain_name (LttSystemDescription * s); gchar * ltt_trace_system_description_description (LttSystemDescription * s); -/* get the start time of the trace */ +/* get the NTP start time of the trace */ + +LttTime ltt_trace_start_time(LttTrace *t); + +/* get the monotonic start time of the trace */ -LttTime ltt_trace_system_description_trace_start_time(LttSystemDescription *s); +LttTime ltt_trace_start_time_monotonic(LttTrace *t); /* copy tracefile info over another. Used for sync. */ LttTracefile *ltt_tracefile_new(); @@ -165,15 +207,20 @@ void compute_tracefile_group(GQuark key_id, GArray *group, struct compute_tracefile_group_args *args); -LttFacility *ltt_trace_get_facility_by_num(LttTrace *t, guint num); +//LttFacility *ltt_trace_get_facility_by_num(LttTrace *t, guint num); -gint check_fields_compatibility(LttEventType *event_type1, - LttEventType *event_type2, - LttField *field1, LttField *field2); +//gint check_fields_compatibility(LttEventType *event_type1, +// LttEventType *event_type2, +// LttField *field1, LttField *field2); gint64 ltt_get_int(gboolean reverse_byte_order, gint size, void *data); guint64 ltt_get_uint(gboolean reverse_byte_order, gint size, void *data); +LttTime ltt_interpolate_time_from_tsc(LttTracefile *tf, guint64 tsc); + +/* Set to enable event debugging output */ +void ltt_event_debug(int state); + #endif // TRACE_H