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