add usertrace support
[lttv.git] / ltt / branches / poly / ltt / trace.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 * 2005 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
963b5f2d 20#ifndef TRACE_H
21#define TRACE_H
1b82f325 22
23#include <ltt/ltt.h>
24
3aee1200 25extern GQuark LTT_FACILITY_NAME_HEARTBEAT,
26 LTT_EVENT_NAME_HEARTBEAT;
27
1b82f325 28/* A trace is specified as a pathname to the directory containing all the
290dfc8c 29 associated data (control tracefiles, per cpu tracefiles, event
1b82f325 30 descriptions...).
31
32 When a trace is closed, all the associated facilities, types and fields
2a74fbf4 33 are released as well.
34
35 return value is NULL if there is an error when opening the trace.
36
37 */
1b82f325 38
45e14832 39LttTrace *ltt_trace_open(const gchar *pathname);
f7afe191 40
2a74fbf4 41/* copy reopens a trace
42 *
43 * return value NULL if error while opening the trace
44 */
f7afe191 45LttTrace *ltt_trace_copy(LttTrace *self);
1b82f325 46
826f1ab2 47GQuark ltt_trace_name(const LttTrace *t);
49bf71b5 48
290dfc8c 49void ltt_trace_close(LttTrace *t);
1b82f325 50
b56dcdf2 51guint ltt_trace_get_num_cpu(LttTrace *t);
1b82f325 52
963b5f2d 53LttSystemDescription *ltt_trace_system_description(LttTrace *t);
1b82f325 54
1b82f325 55
290dfc8c 56/* Functions to discover the facilities in the trace. Once the number
57 of facilities is known, they may be accessed by position. Multiple
58 versions of a facility (same name, different checksum) have consecutive
59 positions. */
1b82f325 60
290dfc8c 61unsigned ltt_trace_facility_number(LttTrace *t);
1b82f325 62
290dfc8c 63LttFacility *ltt_trace_facility_get(LttTrace *t, unsigned i);
1b82f325 64
3aee1200 65LttFacility * ltt_trace_facility_by_id(LttTrace * trace, guint8 id);
1b82f325 66
77175651 67/* Returns an array of indexes (guint) that matches the facility name */
68GArray *ltt_trace_facility_get_by_name(LttTrace *t, GQuark name);
1b82f325 69
290dfc8c 70/* Functions to discover all the event types in the trace */
1b82f325 71
290dfc8c 72unsigned ltt_trace_eventtype_number(LttTrace *t);
1b82f325 73
290dfc8c 74LttEventType *ltt_trace_eventtype_get(LttTrace *t, unsigned i);
1b82f325 75
1b82f325 76
487ad181 77/* Get the start time and end time of the trace */
78
79void ltt_trace_time_span_get(LttTrace *t, LttTime *start, LttTime *end);
80
81
290dfc8c 82/* Get the name of a tracefile */
1b82f325 83
348c6ba8 84GQuark ltt_tracefile_name(const LttTracefile *tf);
85GQuark ltt_tracefile_long_name(const LttTracefile *tf);
1b82f325 86
d3d34f49 87/* get the cpu number of the tracefile */
88
ae3d0f50 89guint ltt_tracefile_cpu(LttTracefile *tf);
90
91/* For usertrace */
92guint ltt_tracefile_tid(LttTracefile *tf);
93guint ltt_tracefile_pgid(LttTracefile *tf);
94guint64 ltt_tracefile_creation(LttTracefile *tf);
95
d3d34f49 96
97LttTrace *ltt_tracefile_get_trace(LttTracefile *tf);
1b82f325 98
80da81ad 99/* Get the number of blocks in the tracefile */
100
101unsigned ltt_tracefile_block_number(LttTracefile *tf);
102
103
1b82f325 104/* Seek to the first event of the trace with time larger or equal to time */
105
3aee1200 106int ltt_tracefile_seek_time(LttTracefile *t, LttTime time);
1b82f325 107
80da81ad 108/* Seek to the first event with position equal or larger to ep */
109
3aee1200 110int ltt_tracefile_seek_position(LttTracefile *t,
04b44e05 111 const LttEventPosition *ep);
1b82f325 112
113/* Read the next event */
114
3aee1200 115int ltt_tracefile_read(LttTracefile *t);
a5dcde2f 116
3aee1200 117/* ltt_tracefile_read cut down in pieces */
118int ltt_tracefile_read_seek(LttTracefile *t);
119int ltt_tracefile_read_update_event(LttTracefile *t);
120int ltt_tracefile_read_op(LttTracefile *t);
a5dcde2f 121
eed2ef37 122/* Get the current event of the tracefile : valid until the next read */
123LttEvent *ltt_tracefile_get_event(LttTracefile *tf);
124
3aee1200 125/* open tracefile */
a5dcde2f 126
3aee1200 127gint ltt_tracefile_open(LttTrace *t, gchar * fileName, LttTracefile *tf);
a5dcde2f 128
a5dcde2f 129/* get the data type size and endian type of the local machine */
130
131void getDataEndianType(LttArchSize * size, LttArchEndian * endian);
132
133/* get an integer number */
3aee1200 134gint64 get_int(gboolean reverse_byte_order, gint size, void *data);
a5dcde2f 135
136/* get the node name of the system */
137
45e14832 138gchar * ltt_trace_system_description_node_name (LttSystemDescription * s);
a5dcde2f 139
140
141/* get the domain name of the system */
142
45e14832 143gchar * ltt_trace_system_description_domain_name (LttSystemDescription * s);
a5dcde2f 144
145
146/* get the description of the system */
147
45e14832 148gchar * ltt_trace_system_description_description (LttSystemDescription * s);
a5dcde2f 149
150
bf33dd50 151/* get the NTP start time of the trace */
a5dcde2f 152
7bd563ec 153LttTime ltt_trace_start_time(LttTrace *t);
a5dcde2f 154
bf33dd50 155/* get the monotonic start time of the trace */
156
157LttTime ltt_trace_start_time_monotonic(LttTrace *t);
158
18206708 159/* copy tracefile info over another. Used for sync. */
160LttTracefile *ltt_tracefile_new();
161void ltt_tracefile_destroy(LttTracefile *tf);
162void ltt_tracefile_copy(LttTracefile *dest, const LttTracefile *src);
163
45e14832 164void get_absolute_pathname(const gchar *pathname, gchar * abs_pathname);
18206708 165
e45551ac 166/* May return a NULL tracefile group */
3865ea09 167GData **ltt_trace_get_tracefiles_groups(LttTrace *trace);
77175651 168
169typedef void (*ForEachTraceFileFunc)(LttTracefile *tf, gpointer func_args);
170
171struct compute_tracefile_group_args {
172 ForEachTraceFileFunc func;
173 gpointer func_args;
174};
175
3865ea09 176
177void compute_tracefile_group(GQuark key_id,
178 GArray *group,
179 struct compute_tracefile_group_args *args);
77175651 180
181LttFacility *ltt_trace_get_facility_by_num(LttTrace *t, guint num);
182
3aee1200 183
77175651 184gint check_fields_compatibility(LttEventType *event_type1,
185 LttEventType *event_type2,
186 LttField *field1, LttField *field2);
3aee1200 187
a0c1f622 188gint64 ltt_get_int(gboolean reverse_byte_order, gint size, void *data);
189
190guint64 ltt_get_uint(gboolean reverse_byte_order, gint size, void *data);
191
ae3d0f50 192LttTime ltt_interpolate_time_from_tsc(LttTracefile *tf, guint64 tsc);
193
1b82f325 194#endif // TRACE_H
This page took 0.097718 seconds and 4 git commands to generate.