removed X on tabs, because would need style hack : too long
[lttv.git] / ltt / branches / poly / ltt / event.h
CommitLineData
9c312311 1/* This file is part of the Linux Trace Toolkit trace reading library
2 * Copyright (C) 2003-2004 Michel Dagenais
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License Version 2.1 as published by the Free Software Foundation.
7 *
8 * This library is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 * Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public
14 * License along with this library; if not, write to the
15 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
16 * Boston, MA 02111-1307, USA.
17 */
18
7c6b3cd7 19#ifndef EVENT_H
20#define EVENT_H
21
22#include <ltt/ltt.h>
975e44c7 23
24/* Events and their content, including the raw data, are only valid
25 until reading another event from the same tracefile.
26 Indeed, since event reading is critical to the performance,
27 the memory associated with an event may be reused at each read. */
28
29
1b82f325 30/* Obtain the trace unique integer id associated with the type of
975e44c7 31 this event */
32
290dfc8c 33unsigned ltt_event_eventtype_id(LttEvent *e);
975e44c7 34
35
36/* Facility and type for the event */
37
290dfc8c 38LttFacility *ltt_event_facility(LttEvent *e);
975e44c7 39
290dfc8c 40LttEventType *ltt_event_eventtype(LttEvent *e);
975e44c7 41
1b82f325 42
43/* Root field for the event */
44
290dfc8c 45LttField *ltt_event_field(LttEvent *e);
975e44c7 46
1b82f325 47
975e44c7 48/* Time and cycle count for the event */
49
290dfc8c 50LttTime ltt_event_time(LttEvent *e);
975e44c7 51
290dfc8c 52LttCycleCount ltt_event_cycle_count(LttEvent *e);
975e44c7 53
54
80da81ad 55/* Obtain the position of the event within the tracefile. This
56 is used to seek back to this position later or to seek to another
57 position, computed relative to this position. The event position
58 structure is opaque and contains several fields, only two
59 of which are user accessible: block number and event index
60 within the block. */
61
62void ltt_event_position(LttEvent *e, LttEventPosition *ep);
63
a5dcde2f 64LttEventPosition * ltt_event_position_new();
65
80da81ad 66void ltt_event_position_get(LttEventPosition *ep,
fb1a869e 67 unsigned *block_number, unsigned *index_in_block, LttTracefile ** tf);
80da81ad 68
69void ltt_event_position_set(LttEventPosition *ep,
70 unsigned block_number, unsigned index_in_block);
71
96da5c0d 72gint ltt_event_position_compare(const LttEventPosition *ep1,
73 const LttEventPosition *ep2);
80da81ad 74
96da5c0d 75gint ltt_event_event_position_compare(const LttEvent *event,
76 const LttEventPosition *ep);
290dfc8c 77/* CPU id of the event */
975e44c7 78
290dfc8c 79unsigned ltt_event_cpu_id(LttEvent *e);
975e44c7 80
81
82/* Pointer to the raw data for the event. This should not be used directly
83 unless prepared to do all the architecture specific conversions. */
84
290dfc8c 85void *ltt_event_data(LttEvent *e);
975e44c7 86
87
a6bf5e74 88/* The number of elements in a sequence field is specific to each event
89 instance. This function returns the number of elements for an array or
90 sequence field in an event. */
975e44c7 91
290dfc8c 92unsigned ltt_event_field_element_number(LttEvent *e, LttField *f);
975e44c7 93
94
95/* Set the currently selected element for a sequence or array field. */
96
290dfc8c 97void ltt_event_field_element_select(LttEvent *e, LttField *f, unsigned i);
975e44c7 98
99
a6bf5e74 100/* A union is like a structure except that only a single member at a time
101 is present depending on the specific event instance. This function tells
102 the active member for a union field in an event. */
103
104unsigned ltt_event_field_union_member(LttEvent *e, LttField *f);
105
106
975e44c7 107/* These functions extract data from an event after architecture specific
108 conversions. */
109
290dfc8c 110unsigned ltt_event_get_unsigned(LttEvent *e, LttField *f);
975e44c7 111
290dfc8c 112int ltt_event_get_int(LttEvent *e, LttField *f);
975e44c7 113
290dfc8c 114unsigned long ltt_event_get_long_unsigned(LttEvent *e, LttField *f);
975e44c7 115
290dfc8c 116long int ltt_event_get_long_int(LttEvent *e, LttField *f);
975e44c7 117
290dfc8c 118float ltt_event_get_float(LttEvent *e, LttField *f);
975e44c7 119
290dfc8c 120double ltt_event_get_double(LttEvent *e, LttField *f);
975e44c7 121
122
123/* The string obtained is only valid until the next read from
124 the same tracefile. */
125
290dfc8c 126char *ltt_event_get_string(LttEvent *e, LttField *f);
7c6b3cd7 127
128#endif // EVENT_H
This page took 0.034009 seconds and 4 git commands to generate.