Other notable features:
- Produces [CTF](http://www.efficios.com/ctf)
- (Common Trace Format) natively.
+ (Common Trace Format) natively,
- Tracepoints, function tracer, CPU Performance Monitoring Unit (PMU)
- counters, kprobes, and kretprobes support.
+ counters, kprobes, and kretprobes support,
- Have the ability to attach _context_ information to events in the
trace (e.g., any PMU counter, PID, PPID, TID, command name, etc).
All the extra information fields to be collected with events are
sudo depmod -a kernel_version
+### Kernel built-in support
+
+It is also possible to build these modules as part of a kernel image. Simply
+run the [`scripts/built-in.sh`](scripts/built-in.sh) script with the path to
+your kernel source directory as an argument. It will symlink the
+lttng-modules directory in the kernel sources and add an include in the kernel
+Makefile.
+
+Then configure your kernel as usual and enable the `CONFIG_LTTNG` option.
+
+
### Required kernel config options
Make sure your target kernel has the following config options enabled:
- - `CONFIG_MODULES`: loadable module support
+ - `CONFIG_MODULES`: loadable module support (not strictly required
+ when built into the kernel),
- `CONFIG_KALLSYMS`: see files in [`wrapper`](wrapper); this is
necessary until the few required missing symbols are exported to GPL
- modules from mainline
- - `CONFIG_HIGH_RES_TIMERS`: needed for LTTng 2.x clock source
+ modules from mainline,
+ - `CONFIG_HIGH_RES_TIMERS`: needed for LTTng 2.x clock source,
- `CONFIG_TRACEPOINTS`: kernel tracepoint instrumentation
(enabled as a side-effect of any of the perf/ftrace/blktrace
- instrumentation features)
+ instrumentation features).
+ - `CONFIG_KPROBES` (5.7+): use kallsyms for kernel 5.7 and newer.
### Supported (optional) kernel config options
- `CONFIG_KALLSYMS_ALL`: state dump of mapping between block device
number and name
+### LTTng specific kernel config options
+
+The following kernel configuration options are provided by LTTng:
+
+ - `CONFIG_LTTNG`: Build LTTng (Defaults to 'm').
+ - `CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM`: Enable the experimental bitwise
+ enumerations (Defaults to 'n'). This can be enabled by building with:
+
+ make CONFIG_LTTNG_EXPERIMENTAL_BITWISE_ENUM=y
+
+ - `CONFIG_LTTNG_CLOCK_PLUGIN_TEST`: Build the test clock plugin (Defaults to
+ 'm'). This plugin overrides the trace clock and should always be built as a
+ module for testing.
+
+
+Customization/Extension
+-----------------------
+
+The lttng-modules source includes definitions for the actual callback
+functions that will be attached to the kernel tracepoints by lttng.
+The lttng-modules project implements its own macros generating these
+callbacks: the LTTNG_TRACEPOINT_EVENT macro family found in
+instrumentation/events/lttng-module/. In order to show up in a
+lttng-modules trace, a kernel tracepoint must be defined within the
+kernel tree, and also defined within lttng-modules with the
+LTTNG_TRACEPOINT_EVENT macro family. Customizations or extensions must
+be done by modifying instances of these macros within the lttng-modules
+source.
-Using
+Usage
-----
Use [LTTng-tools](https://lttng.org/download) to control the tracer.
Support
-------
-Linux kernels >= 2.6.36 are supported.
+Linux kernels >= 3.0 are supported.
Notes