162306a36Sopenharmony_ci=============================== 262306a36Sopenharmony_ciThe Linux Kernel Tracepoint API 362306a36Sopenharmony_ci=============================== 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci:Author: Jason Baron 662306a36Sopenharmony_ci:Author: William Cohen 762306a36Sopenharmony_ci 862306a36Sopenharmony_ciIntroduction 962306a36Sopenharmony_ci============ 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ciTracepoints are static probe points that are located in strategic points 1262306a36Sopenharmony_cithroughout the kernel. 'Probes' register/unregister with tracepoints via 1362306a36Sopenharmony_cia callback mechanism. The 'probes' are strictly typed functions that are 1462306a36Sopenharmony_cipassed a unique set of parameters defined by each tracepoint. 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ciFrom this simple callback mechanism, 'probes' can be used to profile, 1762306a36Sopenharmony_cidebug, and understand kernel behavior. There are a number of tools that 1862306a36Sopenharmony_ciprovide a framework for using 'probes'. These tools include Systemtap, 1962306a36Sopenharmony_ciftrace, and LTTng. 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ciTracepoints are defined in a number of header files via various macros. 2262306a36Sopenharmony_ciThus, the purpose of this document is to provide a clear accounting of 2362306a36Sopenharmony_cithe available tracepoints. The intention is to understand not only what 2462306a36Sopenharmony_citracepoints are available but also to understand where future 2562306a36Sopenharmony_citracepoints might be added. 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ciThe API presented has functions of the form: 2862306a36Sopenharmony_ci``trace_tracepointname(function parameters)``. These are the tracepoints 2962306a36Sopenharmony_cicallbacks that are found throughout the code. Registering and 3062306a36Sopenharmony_ciunregistering probes with these callback sites is covered in the 3162306a36Sopenharmony_ci``Documentation/trace/*`` directory. 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ciIRQ 3462306a36Sopenharmony_ci=== 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci.. kernel-doc:: include/trace/events/irq.h 3762306a36Sopenharmony_ci :internal: 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ciSIGNAL 4062306a36Sopenharmony_ci====== 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci.. kernel-doc:: include/trace/events/signal.h 4362306a36Sopenharmony_ci :internal: 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ciBlock IO 4662306a36Sopenharmony_ci======== 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ci.. kernel-doc:: include/trace/events/block.h 4962306a36Sopenharmony_ci :internal: 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ciWorkqueue 5262306a36Sopenharmony_ci========= 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ci.. kernel-doc:: include/trace/events/workqueue.h 5562306a36Sopenharmony_ci :internal: 56