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).
### Supported (optional) kernel config options
- `CONFIG_KALLSYMS_ALL`: state dump of mapping between block device
number and name
-
-Using
+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
-----
Use [LTTng-tools](https://lttng.org/download) to control the tracer.
Support
-------
-So far, it has been tested on various vanilla Linux kernels from 2.6.38
-to 3.16, most of them on IA-32/x86-64 and some of them on ARM and Power-PC
-32-bit. Linux 2.6.32 to 2.6.34 need up to 3 patches applied (refer to
-[`linux-patches`](linux-patches)). It should work fine with newer kernels and
-other architectures, but expect build issues with kernels older than 2.6.36.
+Linux kernels >= 3.0 are supported.
Notes