| <?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> | 
 |   </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> | 
 |  | 
 | </book> |