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
### Kernel built-in support
It is also possible to build these modules as part of a kernel image. Simply
-run the [`built-in.sh`](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.
+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.
Make sure your target kernel has the following config options enabled:
- `CONFIG_MODULES`: loadable module support (not strictly required
- when built into the kernel)
+ 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.
Usage
-----
Support
-------
-Linux kernels >= 2.6.36 are supported.
+Linux kernels >= 4.4 are supported.
Notes