1*d6ba7a9cSJonathan Corbet=============================== 2*d6ba7a9cSJonathan CorbetThe Linux Kernel Tracepoint API 3*d6ba7a9cSJonathan Corbet=============================== 4*d6ba7a9cSJonathan Corbet 5*d6ba7a9cSJonathan Corbet:Author: Jason Baron 6*d6ba7a9cSJonathan Corbet:Author: William Cohen 7*d6ba7a9cSJonathan Corbet 8*d6ba7a9cSJonathan CorbetIntroduction 9*d6ba7a9cSJonathan Corbet============ 10*d6ba7a9cSJonathan Corbet 11*d6ba7a9cSJonathan CorbetTracepoints are static probe points that are located in strategic points 12*d6ba7a9cSJonathan Corbetthroughout the kernel. 'Probes' register/unregister with tracepoints via 13*d6ba7a9cSJonathan Corbeta callback mechanism. The 'probes' are strictly typed functions that are 14*d6ba7a9cSJonathan Corbetpassed a unique set of parameters defined by each tracepoint. 15*d6ba7a9cSJonathan Corbet 16*d6ba7a9cSJonathan CorbetFrom this simple callback mechanism, 'probes' can be used to profile, 17*d6ba7a9cSJonathan Corbetdebug, and understand kernel behavior. There are a number of tools that 18*d6ba7a9cSJonathan Corbetprovide a framework for using 'probes'. These tools include Systemtap, 19*d6ba7a9cSJonathan Corbetftrace, and LTTng. 20*d6ba7a9cSJonathan Corbet 21*d6ba7a9cSJonathan CorbetTracepoints are defined in a number of header files via various macros. 22*d6ba7a9cSJonathan CorbetThus, the purpose of this document is to provide a clear accounting of 23*d6ba7a9cSJonathan Corbetthe available tracepoints. The intention is to understand not only what 24*d6ba7a9cSJonathan Corbettracepoints are available but also to understand where future 25*d6ba7a9cSJonathan Corbettracepoints might be added. 26*d6ba7a9cSJonathan Corbet 27*d6ba7a9cSJonathan CorbetThe API presented has functions of the form: 28*d6ba7a9cSJonathan Corbet``trace_tracepointname(function parameters)``. These are the tracepoints 29*d6ba7a9cSJonathan Corbetcallbacks that are found throughout the code. Registering and 30*d6ba7a9cSJonathan Corbetunregistering probes with these callback sites is covered in the 31*d6ba7a9cSJonathan Corbet``Documentation/trace/*`` directory. 32*d6ba7a9cSJonathan Corbet 33*d6ba7a9cSJonathan CorbetIRQ 34*d6ba7a9cSJonathan Corbet=== 35*d6ba7a9cSJonathan Corbet 36*d6ba7a9cSJonathan Corbet.. kernel-doc:: include/trace/events/irq.h 37*d6ba7a9cSJonathan Corbet :internal: 38*d6ba7a9cSJonathan Corbet 39*d6ba7a9cSJonathan CorbetSIGNAL 40*d6ba7a9cSJonathan Corbet====== 41*d6ba7a9cSJonathan Corbet 42*d6ba7a9cSJonathan Corbet.. kernel-doc:: include/trace/events/signal.h 43*d6ba7a9cSJonathan Corbet :internal: 44*d6ba7a9cSJonathan Corbet 45*d6ba7a9cSJonathan CorbetBlock IO 46*d6ba7a9cSJonathan Corbet======== 47*d6ba7a9cSJonathan Corbet 48*d6ba7a9cSJonathan Corbet.. kernel-doc:: include/trace/events/block.h 49*d6ba7a9cSJonathan Corbet :internal: 50*d6ba7a9cSJonathan Corbet 51*d6ba7a9cSJonathan CorbetWorkqueue 52*d6ba7a9cSJonathan Corbet========= 53*d6ba7a9cSJonathan Corbet 54*d6ba7a9cSJonathan Corbet.. kernel-doc:: include/trace/events/workqueue.h 55*d6ba7a9cSJonathan Corbet :internal: 56