1*d6ba7a9cSJonathan Corbet===============================
2*d6ba7a9cSJonathan CorbetThe Linux Kernel Tracepoint API
3*d6ba7a9cSJonathan Corbet===============================
4*d6ba7a9cSJonathan Corbet
5*d6ba7a9cSJonathan Corbet:Author: Jason Baron
6*d6ba7a9cSJonathan Corbet:Author: William Cohen
7*d6ba7a9cSJonathan Corbet
8*d6ba7a9cSJonathan CorbetIntroduction
9*d6ba7a9cSJonathan Corbet============
10*d6ba7a9cSJonathan Corbet
11*d6ba7a9cSJonathan CorbetTracepoints are static probe points that are located in strategic points
12*d6ba7a9cSJonathan Corbetthroughout the kernel. 'Probes' register/unregister with tracepoints via
13*d6ba7a9cSJonathan Corbeta callback mechanism. The 'probes' are strictly typed functions that are
14*d6ba7a9cSJonathan Corbetpassed a unique set of parameters defined by each tracepoint.
15*d6ba7a9cSJonathan Corbet
16*d6ba7a9cSJonathan CorbetFrom this simple callback mechanism, 'probes' can be used to profile,
17*d6ba7a9cSJonathan Corbetdebug, and understand kernel behavior. There are a number of tools that
18*d6ba7a9cSJonathan Corbetprovide a framework for using 'probes'. These tools include Systemtap,
19*d6ba7a9cSJonathan Corbetftrace, and LTTng.
20*d6ba7a9cSJonathan Corbet
21*d6ba7a9cSJonathan CorbetTracepoints are defined in a number of header files via various macros.
22*d6ba7a9cSJonathan CorbetThus, the purpose of this document is to provide a clear accounting of
23*d6ba7a9cSJonathan Corbetthe available tracepoints. The intention is to understand not only what
24*d6ba7a9cSJonathan Corbettracepoints are available but also to understand where future
25*d6ba7a9cSJonathan Corbettracepoints might be added.
26*d6ba7a9cSJonathan Corbet
27*d6ba7a9cSJonathan CorbetThe API presented has functions of the form:
28*d6ba7a9cSJonathan Corbet``trace_tracepointname(function parameters)``. These are the tracepoints
29*d6ba7a9cSJonathan Corbetcallbacks that are found throughout the code. Registering and
30*d6ba7a9cSJonathan Corbetunregistering probes with these callback sites is covered in the
31*d6ba7a9cSJonathan Corbet``Documentation/trace/*`` directory.
32*d6ba7a9cSJonathan Corbet
33*d6ba7a9cSJonathan CorbetIRQ
34*d6ba7a9cSJonathan Corbet===
35*d6ba7a9cSJonathan Corbet
36*d6ba7a9cSJonathan Corbet.. kernel-doc:: include/trace/events/irq.h
37*d6ba7a9cSJonathan Corbet   :internal:
38*d6ba7a9cSJonathan Corbet
39*d6ba7a9cSJonathan CorbetSIGNAL
40*d6ba7a9cSJonathan Corbet======
41*d6ba7a9cSJonathan Corbet
42*d6ba7a9cSJonathan Corbet.. kernel-doc:: include/trace/events/signal.h
43*d6ba7a9cSJonathan Corbet   :internal:
44*d6ba7a9cSJonathan Corbet
45*d6ba7a9cSJonathan CorbetBlock IO
46*d6ba7a9cSJonathan Corbet========
47*d6ba7a9cSJonathan Corbet
48*d6ba7a9cSJonathan Corbet.. kernel-doc:: include/trace/events/block.h
49*d6ba7a9cSJonathan Corbet   :internal:
50*d6ba7a9cSJonathan Corbet
51*d6ba7a9cSJonathan CorbetWorkqueue
52*d6ba7a9cSJonathan Corbet=========
53*d6ba7a9cSJonathan Corbet
54*d6ba7a9cSJonathan Corbet.. kernel-doc:: include/trace/events/workqueue.h
55*d6ba7a9cSJonathan Corbet   :internal:
56