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