traceWindow.h at the lttv top level
[lttv.git] / ltt / branches / poly / ltt / tracefile.h
CommitLineData
975e44c7 1
2#include <ltt/ltt.h>
3
4/* A tracefile is specified as a pathname. Facilities must be added to the
5 tracefile to declare the type of the contained events.
6
7 The ltt_tracefile_facility_add call increases the facility
8 usage count and also specifies the base of the numeric range
9 assigned to the event types in the facility for this tracefile.
10 This information is normally obtained through "facility used" events
11 stored in the tracefile.
12
13 When a tracefile is closed, all the associated facilities may be
14 automatically closed as well, if their usage count is 0, when the
15 close_facilities argument is true. */
16
17ltt_tracefile *ltt_tracefile_open(char *pathname);
18
19int ltt_tracefile_close(ltt_tracefile *t, bool close_facilities);
20
21int ltt_tracefile_facility_add(ltt_tracefile *t, ltt_facility *f, int base_id);
22
23
24/* A tracefile may be queried for its architecture type (e.g., "i386",
25 "powerpc", "powerpcle", "s390", "s390x"), its architecture variant
26 (e.g., "att" versus "sun" for m68k), its operating system (e.g., "linux",
27 "bsd"), its generic architecture, and the machine identity (e.g., system
28 host name). All character strings belong to the associated tracefile
29 and are freed when it is closed. */
30
31typedef enum _ltt_arch_size
32{ LTT_LP32, LTT_ILP32, LTT_LP64, LTT_ILP64
33} ltt_arch_size;
34
35typedef enum _ltt_arch_endian
36{ LTT_LITTLE_ENDIAN, LTT_BIG_ENDIAN
37} ltt_arch_endian;
38
39char *ltt_tracefile_arch_type(ltt_tracefile *t);
40
41char *ltt_tracefile_arch_variant(ltt_tracefile *t);
42
43ltt_arch_size *ltt_tracefile_arch_size(ltt_tracefile *t);
44
45ltt_arch_endian *ltt_tracefile_arch_endian(ltt_tracefile *t);
46
47char *ltt_tracefile_system_type(ltt_tracefile *t);
48
49char *ltt_tracefile_system_name(ltt_tracefile *t);
50
51
52/* SMP multi-processors have 2 or more CPUs */
53
54unsigned ltt_tracefile_cpu_number(ltt_tracefile *t);
55
56
57/* Does the tracefile contain events only for a single CPU? */
58
59bool ltt_tracefile_cpu_single(ltt_tracefile *t);
60
61
62/* It this is the case, which CPU? */
63
64unsigned ltt_tracefile_cpu_id(ltt_tracefile *t);
65
66
67/* Start and end time of the trace and its duration */
68
69ltt_time ltt_tracefile_time_start(ltt_tracefile *t);
70
71ltt_time ltt_tracefile_time_end(ltt_tracefile *t);
72
73ltt_time ltt_tracefile_duration(ltt_tracefile *t);
74
75
76/* Functions to discover the facilities added to the tracefile */
77
78unsigned ltt_tracefile_facility_number(ltt_tracefile *t);
79
80ltt_facility *ltt_tracefile_facility_get(ltt_tracefile *t, unsigned i);
81
82ltt_facility *ltt_tracefile_facility_get_by_name(ltt_tracefile *t, char *name);
83
84
85/* Functions to discover all the event types in the facilities added to the
86 tracefile. The event type integer id, unique for the trace, is used. */
87
88unsigned ltt_tracefile_eventtype_number(ltt_tracefile *t);
89
90ltt_eventtype *ltt_tracefile_eventtype_get(ltt_tracefile *t, unsigned i);
91
92
93/* Given an event type, find its unique id within the tracefile */
94
95unsigned ltt_tracefile_eventtype_id(ltt_tracefile *t, ltt_eventtype *et);
96
97
98/* Get the root field associated with an event type for the tracefile */
99
100ltt_field *ltt_tracefile_eventtype_root_field(ltt_tracefile *t, unsigned id);
101
102
103/* Seek to the first event of the trace with time larger or equal to time */
104
105int ltt_tracefile_seek_time(ltt_tracefile *t, ltt_time time);
106
107
108/* Read the next event */
109
110ltt_event *ltt_tracefile_read(ltt_tracefile *t);
This page took 0.027843 seconds and 4 git commands to generate.