File: x23.html

package info (click to toggle)
lttv 1.5-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 6,276 kB
  • ctags: 2,921
  • sloc: ansic: 26,335; sh: 11,338; makefile: 247
file content (200 lines) | stat: -rw-r--r-- 4,930 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>A typical module</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="Linux Trace Toolkit Viewer Developer Guide"
HREF="index.html"><LINK
REL="UP"
TITLE="Linux Trace Toolkit Viewer Text Module Tutorial"
HREF="c18.html"><LINK
REL="PREVIOUS"
TITLE="Linux Trace Toolkit Viewer Text Module Tutorial"
HREF="c18.html"><LINK
REL="NEXT"
TITLE="The hooks"
HREF="x33.html"></HEAD
><BODY
CLASS="sect1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Linux Trace Toolkit Viewer Developer Guide</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="c18.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 1. Linux Trace Toolkit Viewer Text Module Tutorial</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x33.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="AEN23"
>1.2. A typical module</A
></H1
><P
>&#13;A typical module must have a init() and destroy() function. Please refer to
lttv/modules/text/textDump.c for the detail of these functions.
</P
><P
>&#13;The init() function is called when the library is loaded and destroy()
inversely. It adds options to the command line by calling "lttv_option_add" from
option.h
</P
><P
>&#13;The module communicates with the main lttv program through the use of global
attributes. Use lttv/attribute.h, lttv/iattribute.h and lttv/lttv.h, and then
LTTV_IATTRIBUTE(lttv_global_attributes()) to get the pointer to these
global attributes.
</P
><P
>&#13;You can then add your hooks (functions that follows the prototype of a hook, as
defined in lttv/hook.h) in the different hook lists defined in lttv/lttv.h. Note
that hooks have an assigned priority. This is necessary to inform the trace
reader that a specific hook needs to be called, for example, before or after the
state update done for an event by the state module. For that specific example, a
hook could use the LTTV_PRIO_STATE-5 to get called before the state update and a
second hook could use the LTTV_PRIO_STATE+5 to get called after the state
update. This is especially important for graphical module, which is the subject
of a the chapter named "Linux Trace Toolkit Viewer Graphical Module Tutorial".
</P
><P
>&#13;You should also take a look at lttv/state.c, where by_id hooks are used. When
you only need some specific events, you should use this interface. It makes the
event filtering sooner in the dispatch chain : you hook doesn't have to be
called for each event, only the ones selected. That improves the performances a
lot!
</P
><P
>&#13;Note that you should use the lttv_trace_find_hook method from
lttv/tracecontext.h to connect the hook to the right facility/event type. See
state.c for an example. A problem that may arise is that the LttvTraceHook
structure must be passed as hook_data when registering the hook. In fact, it is
not necessary for it to be directly passed as the hook_data parameter. As long
as the hook function can access the LttvTraceHook fields necessary to parse the
LttEvent, there is no problem. In a complex viewer where you need a pointer to
your own data structure, just keep a pointer to the LttvTraceHook structure
inside your own data structure, and give to pointer to your data structure in
parameter as the hook_data.
</P
><P
>&#13;Then, you should use the macro LTTV_MODULE, defined in lttv/module.h. It allows
you to specify the module name, a short and a long description, the init and
destroy functions and the module dependencies. That permits to the module
backend to load the right dependencies when needed.
</P
><P
>&#13;A typical text module will depend on batchAnalysis for the batch computation of a
trace, and simply register before and after trace hooks, as weel as the most
important one : a event hook.
</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="c18.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x33.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Linux Trace Toolkit Viewer Text Module Tutorial</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c18.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>The hooks</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>