<?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> <chapter id="workqueue"> <title>Workqueue</title> !Iinclude/trace/events/workqueue.h </chapter> </book>