File: x33.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 (184 lines) | stat: -rw-r--r-- 4,313 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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>The hooks</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="A typical module"
HREF="x23.html"><LINK
REL="NEXT"
TITLE="How to use the Linux Trace Toolkit Viewer's Reading Context"
HREF="c40.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="x23.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="c40.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="AEN33"
>1.3. The hooks</A
></H1
><P
>&#13;The before and after trace hooks only exists to be able to generate a report at
the end of a trace computation. The effective computation is done by the event
hooks.
</P
><P
>&#13;These hooks does particular computation on data arriving as argument, a
call_data. The type of the call_data, when a hook is called during the trace
read, is a traceset context. It contains all the necessary information about the
read in progress. This is the base class from which inherits trace set
state, and trace set/trace/tracefile state is the base classe of trace
set/trace/tracefile statistics. All these types can be casted to another without
problem (a TracesetState, for example, can be casted to a TracesetContext, but
it's not true for the casting between a TraceContext and a TracesetContext, see
the chapter "How to use the trace reading context" for details). They offer the
input data and they give a container (the attributes of the trace set/trace/tracefile
statistics) to write the output of this hook.
</P
><P
>&#13;The idea behind writing in the attributes container is to provide an extensible
way of storing any type of information. For example, a specific module that adds
statistics to a trace can store them there, and the statistic printout will
automatically include the results produced by the specific module.
</P
><P
>&#13;Output data does not necessarily need to be stored in such a global container
though. If we think of data of which we need to keed track during the execution,
an event counter for example, we should create our own data structure that
contains this counter, and pass the address of the allocated structure as the
hook_data parameter of the hook list creation function. That way, the hook will
be called with its hook_data as first parameter, which it can read and write. We
can think of this structure as the data related to the function that persists
between each call to the hook. You must make sure that you cast the hook_data to
the type of the structure before you use it in the hook function.
</P
><P
>&#13;The detail about how to access the different fields of the reading context (the
hook's call_data) will be discussed in the chapter  "How to use the trace
reading context".
</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="x23.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="c40.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>A typical module</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c18.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>How to use the Linux Trace Toolkit Viewer's Reading Context</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>