X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Fltt%2Fevent.h;h=ac3244a5fcc36bb89192439b50296ece7c14aa95;hb=f2923fb2ab6ecc36c74e7845b7b07fe96d3d6d67;hp=4cee97133a0106767817540f0b8791657c6c83e5;hpb=f95bc8309fe113855266f4445874248b6a285062;p=lttv.git diff --git a/ltt/branches/poly/ltt/event.h b/ltt/branches/poly/ltt/event.h index 4cee9713..ac3244a5 100644 --- a/ltt/branches/poly/ltt/event.h +++ b/ltt/branches/poly/ltt/event.h @@ -19,37 +19,39 @@ #ifndef EVENT_H #define EVENT_H +#include #include +#include + +LttEvent *ltt_event_new(); + +void ltt_event_destroy(LttEvent *event); /* Events and their content, including the raw data, are only valid until reading another event from the same tracefile. Indeed, since event reading is critical to the performance, the memory associated with an event may be reused at each read. */ - /* Obtain the trace unique integer id associated with the type of this event */ -unsigned ltt_event_eventtype_id(LttEvent *e); +unsigned ltt_event_eventtype_id(const LttEvent *e); +unsigned ltt_event_facility_id(const LttEvent *e); /* Facility and type for the event */ -LttFacility *ltt_event_facility(LttEvent *e); - -LttEventType *ltt_event_eventtype(LttEvent *e); +LttFacility *ltt_event_facility(const LttEvent *e); +LttEventType *ltt_event_eventtype(const LttEvent *e); -/* Root field for the event */ - -LttField *ltt_event_field(LttEvent *e); /* Time and cycle count for the event */ -LttTime ltt_event_time(LttEvent *e); +LttTime ltt_event_time(const LttEvent *e); -LttCycleCount ltt_event_cycle_count(LttEvent *e); +LttCycleCount ltt_event_cycle_count(const LttEvent *e); /* Obtain the position of the event within the tracefile. This @@ -63,12 +65,16 @@ void ltt_event_position(LttEvent *e, LttEventPosition *ep); LttEventPosition * ltt_event_position_new(); -void ltt_event_position_get(LttEventPosition *ep, - unsigned *block_number, unsigned *index_in_block, LttTracefile ** tf); +void ltt_event_position_get(LttEventPosition *ep, LttTracefile **tf, + guint *block, guint *offset, guint64 *tsc); + +gint ltt_event_position_compare(const LttEventPosition *ep1, + const LttEventPosition *ep2); -void ltt_event_position_set(LttEventPosition *ep, - unsigned block_number, unsigned index_in_block); +void ltt_event_position_copy(LttEventPosition *dest, + const LttEventPosition *src); +LttTracefile *ltt_event_position_tracefile(LttEventPosition *ep); /* CPU id of the event */ @@ -85,13 +91,14 @@ void *ltt_event_data(LttEvent *e); instance. This function returns the number of elements for an array or sequence field in an event. */ -unsigned ltt_event_field_element_number(LttEvent *e, LttField *f); +guint64 ltt_event_field_element_number(LttEvent *e, LttField *f); /* Set the currently selected element for a sequence or array field. */ -void ltt_event_field_element_select(LttEvent *e, LttField *f, unsigned i); +LttField *ltt_event_field_element_select(LttEvent *e, LttField *f, gulong i); +off_t ltt_event_field_offset(LttEvent *e, LttField *f); /* A union is like a structure except that only a single member at a time is present depending on the specific event instance. This function tells @@ -103,13 +110,13 @@ unsigned ltt_event_field_union_member(LttEvent *e, LttField *f); /* These functions extract data from an event after architecture specific conversions. */ -unsigned ltt_event_get_unsigned(LttEvent *e, LttField *f); +guint32 ltt_event_get_unsigned(LttEvent *e, LttField *f); -int ltt_event_get_int(LttEvent *e, LttField *f); +gint32 ltt_event_get_int(LttEvent *e, LttField *f); -unsigned long ltt_event_get_long_unsigned(LttEvent *e, LttField *f); +guint64 ltt_event_get_long_unsigned(LttEvent *e, LttField *f); -long int ltt_event_get_long_int(LttEvent *e, LttField *f); +gint64 ltt_event_get_long_int(LttEvent *e, LttField *f); float ltt_event_get_float(LttEvent *e, LttField *f); @@ -119,6 +126,9 @@ double ltt_event_get_double(LttEvent *e, LttField *f); /* The string obtained is only valid until the next read from the same tracefile. */ -char *ltt_event_get_string(LttEvent *e, LttField *f); +gchar *ltt_event_get_string(LttEvent *e, LttField *f); + +void compute_offsets(LttTracefile *tf, LttFacility *fac, + LttEventType *event, off_t *offset, void *root); #endif // EVENT_H