Filter for selecting trace and tracefile
[lttv.git] / ltt / branches / poly / include / ltt / trace.h
CommitLineData
963b5f2d 1#ifndef TRACE_H
2#define TRACE_H
1b82f325 3
4#include <ltt/ltt.h>
5
6/* A trace is specified as a pathname to the directory containing all the
290dfc8c 7 associated data (control tracefiles, per cpu tracefiles, event
1b82f325 8 descriptions...).
9
10 When a trace is closed, all the associated facilities, types and fields
11 are released as well. */
12
f7afe191 13LttTrace *ltt_trace_open(const char *pathname);
14
15/* copy reopens a trace */
16LttTrace *ltt_trace_copy(LttTrace *self);
1b82f325 17
49bf71b5 18char * ltt_trace_name(LttTrace *t);
19
290dfc8c 20void ltt_trace_close(LttTrace *t);
1b82f325 21
22
290dfc8c 23/* The characteristics of the system on which the trace was obtained
24 is described in a LttSystemDescription structure. */
1b82f325 25
963b5f2d 26struct _LttSystemDescription {
290dfc8c 27 char *description;
28 char *node_name;
963b5f2d 29 char *domain_name;
290dfc8c 30 unsigned nb_cpu;
31 LttArchSize size;
32 LttArchEndian endian;
33 char *kernel_name;
34 char *kernel_release;
35 char *kernel_version;
36 char *machine;
37 char *processor;
38 char *hardware_platform;
39 char *operating_system;
40 unsigned ltt_major_version;
41 unsigned ltt_minor_version;
42 unsigned ltt_block_size;
43 LttTime trace_start;
44 LttTime trace_end;
963b5f2d 45};
1b82f325 46
963b5f2d 47LttSystemDescription *ltt_trace_system_description(LttTrace *t);
1b82f325 48
1b82f325 49
290dfc8c 50/* Functions to discover the facilities in the trace. Once the number
51 of facilities is known, they may be accessed by position. Multiple
52 versions of a facility (same name, different checksum) have consecutive
53 positions. */
1b82f325 54
290dfc8c 55unsigned ltt_trace_facility_number(LttTrace *t);
1b82f325 56
290dfc8c 57LttFacility *ltt_trace_facility_get(LttTrace *t, unsigned i);
1b82f325 58
59
290dfc8c 60/* Look for a facility by name. It returns the number of facilities found
61 and sets the position argument to the first found. Returning 0, the named
62 facility is unknown, returning 1, the named facility is at the specified
63 position, returning n, the facilities are from position to
64 position + n - 1. */
1b82f325 65
290dfc8c 66unsigned ltt_trace_facility_find(LttTrace *t, char *name, unsigned *position);
1b82f325 67
68
290dfc8c 69/* Functions to discover all the event types in the trace */
1b82f325 70
290dfc8c 71unsigned ltt_trace_eventtype_number(LttTrace *t);
1b82f325 72
290dfc8c 73LttEventType *ltt_trace_eventtype_get(LttTrace *t, unsigned i);
1b82f325 74
1b82f325 75
290dfc8c 76/* There is one "per cpu" tracefile for each CPU, numbered from 0 to
77 the maximum number of CPU in the system. When the number of CPU installed
78 is less than the maximum, some positions are unused. There are also a
79 number of "control" tracefiles (facilities, interrupts...). */
1b82f325 80
290dfc8c 81unsigned ltt_trace_control_tracefile_number(LttTrace *t);
1b82f325 82
290dfc8c 83unsigned ltt_trace_per_cpu_tracefile_number(LttTrace *t);
1b82f325 84
1b82f325 85
290dfc8c 86/* It is possible to search for the tracefiles by name or by CPU position.
87 The index within the tracefiles of the same type is returned if found
88 and a negative value otherwise. */
1b82f325 89
290dfc8c 90int ltt_trace_control_tracefile_find(LttTrace *t, char *name);
1b82f325 91
290dfc8c 92int ltt_trace_per_cpu_tracefile_find(LttTrace *t, unsigned i);
1b82f325 93
1b82f325 94
290dfc8c 95/* Get a specific tracefile */
1b82f325 96
290dfc8c 97LttTracefile *ltt_trace_control_tracefile_get(LttTrace *t, unsigned i);
1b82f325 98
290dfc8c 99LttTracefile *ltt_trace_per_cpu_tracefile_get(LttTrace *t, unsigned i);
1b82f325 100
1b82f325 101
487ad181 102/* Get the start time and end time of the trace */
103
104void ltt_trace_time_span_get(LttTrace *t, LttTime *start, LttTime *end);
105
106
290dfc8c 107/* Get the name of a tracefile */
1b82f325 108
290dfc8c 109char *ltt_tracefile_name(LttTracefile *tf);
1b82f325 110
111
80da81ad 112/* Get the number of blocks in the tracefile */
113
114unsigned ltt_tracefile_block_number(LttTracefile *tf);
115
116
1b82f325 117/* Seek to the first event of the trace with time larger or equal to time */
118
290dfc8c 119void ltt_tracefile_seek_time(LttTracefile *t, LttTime time);
1b82f325 120
80da81ad 121/* Seek to the first event with position equal or larger to ep */
122
123void ltt_tracefile_seek_position(LttTracefile *t,
124 LttEventPosition *ep);
1b82f325 125
126/* Read the next event */
127
290dfc8c 128LttEvent *ltt_tracefile_read(LttTracefile *t);
1b82f325 129
130#endif // TRACE_H
This page took 0.0297 seconds and 4 git commands to generate.