| 
									
										
										
										
											2009-04-30 13:29:42 -04:00
										 |  |  | <?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>
 | 
					
						
							| 
									
										
										
										
											2010-03-09 09:26:04 +01:00
										 |  |  |    <author>
 | 
					
						
							|  |  |  |     <firstname>William</firstname>
 | 
					
						
							|  |  |  |     <surname>Cohen</surname>
 | 
					
						
							|  |  |  |     <affiliation>
 | 
					
						
							|  |  |  |      <address>
 | 
					
						
							|  |  |  |       <email>wcohen@redhat.com</email>
 | 
					
						
							|  |  |  |      </address>
 | 
					
						
							|  |  |  |     </affiliation>
 | 
					
						
							|  |  |  |    </author>
 | 
					
						
							| 
									
										
										
										
											2009-04-30 13:29:42 -04:00
										 |  |  |   </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>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-30 13:29:47 -04:00
										 |  |  |   <chapter id="irq">
 | 
					
						
							|  |  |  |    <title>IRQ</title>
 | 
					
						
							|  |  |  | !Iinclude/trace/events/irq.h
 | 
					
						
							|  |  |  |   </chapter>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-11-24 16:56:45 -05:00
										 |  |  |   <chapter id="signal">
 | 
					
						
							|  |  |  |    <title>SIGNAL</title>
 | 
					
						
							|  |  |  | !Iinclude/trace/events/signal.h
 | 
					
						
							|  |  |  |   </chapter>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-09 09:26:04 +01:00
										 |  |  |   <chapter id="block">
 | 
					
						
							|  |  |  |    <title>Block IO</title>
 | 
					
						
							|  |  |  | !Iinclude/trace/events/block.h
 | 
					
						
							|  |  |  |   </chapter>
 | 
					
						
							| 
									
										
										
										
											2010-08-26 10:35:43 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |   <chapter id="workqueue">
 | 
					
						
							|  |  |  |    <title>Workqueue</title>
 | 
					
						
							|  |  |  | !Iinclude/trace/events/workqueue.h
 | 
					
						
							|  |  |  |   </chapter>
 | 
					
						
							| 
									
										
										
										
											2009-04-30 13:29:42 -04:00
										 |  |  | </book>
 |