X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Fltt%2Fevent.h;h=88c036249e9328bf280046d6804b87a3ffdad616;hb=9878c8a4ce727f8a542a836ed289f5eb365d3292;hp=5570ec46964e83c26b5ed3631768ac9c21134b06;hpb=9adb47dd305dfe3b0464f747b43b2ba0263e567d;p=lttv.git diff --git a/ltt/branches/poly/ltt/event.h b/ltt/branches/poly/ltt/event.h index 5570ec46..88c03624 100644 --- a/ltt/branches/poly/ltt/event.h +++ b/ltt/branches/poly/ltt/event.h @@ -1,3 +1,25 @@ +/* This file is part of the Linux Trace Toolkit trace reading library + * Copyright (C) 2003-2004 Michel Dagenais + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License Version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef EVENT_H +#define EVENT_H + +#include /* Events and their content, including the raw data, are only valid until reading another event from the same tracefile. @@ -5,69 +27,102 @@ the memory associated with an event may be reused at each read. */ -/* Obtain the tracefile unique integer id associated with the type of +/* Obtain the trace unique integer id associated with the type of this event */ -unsigned ltt_event_eventtype_id(ltt_event *e); +unsigned ltt_event_eventtype_id(LttEvent *e); /* Facility and type for the event */ -ltt_facility *ltt_event_facility(ltt_event *e); +LttFacility *ltt_event_facility(LttEvent *e); -ltt_eventtype *ltt_event_eventtype(ltt_event *e); +LttEventType *ltt_event_eventtype(LttEvent *e); + + +/* Root field for the event */ + +LttField *ltt_event_field(LttEvent *e); -ltt_field *ltt_event_field(ltt_event *e); /* Time and cycle count for the event */ -ltt_time ltt_event_time(ltt_event *e); +LttTime ltt_event_time(LttEvent *e); + +LttCycleCount ltt_event_cycle_count(LttEvent *e); + + +/* Obtain the position of the event within the tracefile. This + is used to seek back to this position later or to seek to another + position, computed relative to this position. The event position + structure is opaque and contains several fields, only two + of which are user accessible: block number and event index + within the block. */ -ltt_cycle_count ltt_event_cycle_count(ltt_event *e); +void ltt_event_position(LttEvent *e, LttEventPosition *ep); +LttEventPosition * ltt_event_position_new(); -/* CPU id and system name of the event */ +void ltt_event_position_get(LttEventPosition *ep, + unsigned *block_number, unsigned *index_in_block, LttTracefile ** tf); -unsigned ltt_event_cpu_id(ltt_event *e); +void ltt_event_position_set(LttEventPosition *ep, + unsigned block_number, unsigned index_in_block); -char *ltt_event_system_name(ltt_event *e); +gint ltt_event_position_compare(const LttEventPosition *ep1, + const LttEventPosition *ep2); + +gint ltt_event_event_position_compare(const LttEvent *event, + const LttEventPosition *ep); +/* CPU id of the event */ + +unsigned ltt_event_cpu_id(LttEvent *e); /* Pointer to the raw data for the event. This should not be used directly unless prepared to do all the architecture specific conversions. */ -void *ltt_event_data(ltt_event *e); +void *ltt_event_data(LttEvent *e); -/* The number of elements in a sequence field is specific to each event. - This function returns the number of elements for an array or sequence - field in an event. */ +/* The number of elements in a sequence field is specific to each event + instance. This function returns the number of elements for an array or + sequence field in an event. */ -unsigned ltt_event_field_element_number(ltt_event *e, ltt_field *f); +unsigned ltt_event_field_element_number(LttEvent *e, LttField *f); /* Set the currently selected element for a sequence or array field. */ -int ltt_event_field_element_select(ltt_event *e, ltt_field *f, unsigned i); +void ltt_event_field_element_select(LttEvent *e, LttField *f, unsigned i); + + +/* 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 + the active member for a union field in an event. */ + +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(ltt_event *e, ltt_field *f); +unsigned ltt_event_get_unsigned(LttEvent *e, LttField *f); -int ltt_event_get_int(ltt_event *e, ltt_field *f); +int ltt_event_get_int(LttEvent *e, LttField *f); -unsigned long ltt_event_get_long_unsigned(ltt_event *e, ltt_field *f); +unsigned long ltt_event_get_long_unsigned(LttEvent *e, LttField *f); -long int ltt_event_get_long_int(ltt_event *e, ltt_field *f); +long int ltt_event_get_long_int(LttEvent *e, LttField *f); -float ltt_event_get_float(ltt_event *e, ltt_field *f); +float ltt_event_get_float(LttEvent *e, LttField *f); -double ltt_event_get_double(ltt_event *e, ltt_field *f); +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(ltt_event *e, ltt_field *f); +char *ltt_event_get_string(LttEvent *e, LttField *f); + +#endif // EVENT_H