|  | <?xml version="1.0" encoding="UTF-8"?> | 
|  | <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" | 
|  | "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []> | 
|  |  | 
|  | <book id="Tracepoints"> | 
|  | <bookinfo> | 
|  | <title>The Linux Kernel Tracepoint API</title> | 
|  |  | 
|  | <authorgroup> | 
|  | <author> | 
|  | <firstname>Jason</firstname> | 
|  | <surname>Baron</surname> | 
|  | <affiliation> | 
|  | <address> | 
|  | <email>jbaron@redhat.com</email> | 
|  | </address> | 
|  | </affiliation> | 
|  | </author> | 
|  | <author> | 
|  | <firstname>William</firstname> | 
|  | <surname>Cohen</surname> | 
|  | <affiliation> | 
|  | <address> | 
|  | <email>wcohen@redhat.com</email> | 
|  | </address> | 
|  | </affiliation> | 
|  | </author> | 
|  | </authorgroup> | 
|  |  | 
|  | <legalnotice> | 
|  | <para> | 
|  | This documentation is free software; you can redistribute | 
|  | it and/or modify it under the terms of the GNU General Public | 
|  | License as published by the Free Software Foundation; either | 
|  | version 2 of the License, or (at your option) any later | 
|  | version. | 
|  | </para> | 
|  |  | 
|  | <para> | 
|  | This program is distributed in the hope that it will be | 
|  | useful, but WITHOUT ANY WARRANTY; without even the implied | 
|  | warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 
|  | See the GNU General Public License for more details. | 
|  | </para> | 
|  |  | 
|  | <para> | 
|  | You should have received a copy of the GNU General Public | 
|  | License along with this program; if not, write to the Free | 
|  | Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, | 
|  | MA 02111-1307 USA | 
|  | </para> | 
|  |  | 
|  | <para> | 
|  | For more details see the file COPYING in the source | 
|  | distribution of Linux. | 
|  | </para> | 
|  | </legalnotice> | 
|  | </bookinfo> | 
|  |  | 
|  | <toc></toc> | 
|  | <chapter id="intro"> | 
|  | <title>Introduction</title> | 
|  | <para> | 
|  | Tracepoints are static probe points that are located in strategic points | 
|  | throughout the kernel. 'Probes' register/unregister with tracepoints | 
|  | via a callback mechanism. The 'probes' are strictly typed functions that | 
|  | are passed a unique set of parameters defined by each tracepoint. | 
|  | </para> | 
|  |  | 
|  | <para> | 
|  | From this simple callback mechanism, 'probes' can be used to profile, debug, | 
|  | and understand kernel behavior. There are a number of tools that provide a | 
|  | framework for using 'probes'. These tools include Systemtap, ftrace, and | 
|  | LTTng. | 
|  | </para> | 
|  |  | 
|  | <para> | 
|  | Tracepoints are defined in a number of header files via various macros. Thus, | 
|  | the purpose of this document is to provide a clear accounting of the available | 
|  | tracepoints. The intention is to understand not only what tracepoints are | 
|  | available but also to understand where future tracepoints might be added. | 
|  | </para> | 
|  |  | 
|  | <para> | 
|  | The API presented has functions of the form: | 
|  | <function>trace_tracepointname(function parameters)</function>. These are the | 
|  | tracepoints callbacks that are found throughout the code. Registering and | 
|  | unregistering probes with these callback sites is covered in the | 
|  | <filename>Documentation/trace/*</filename> directory. | 
|  | </para> | 
|  | </chapter> | 
|  |  | 
|  | <chapter id="irq"> | 
|  | <title>IRQ</title> | 
|  | !Iinclude/trace/events/irq.h | 
|  | </chapter> | 
|  |  | 
|  | <chapter id="signal"> | 
|  | <title>SIGNAL</title> | 
|  | !Iinclude/trace/events/signal.h | 
|  | </chapter> | 
|  |  | 
|  | <chapter id="block"> | 
|  | <title>Block IO</title> | 
|  | !Iinclude/trace/events/block.h | 
|  | </chapter> | 
|  | </book> |