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