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