Cleanup: Move patches.i to include/generated/
[lttng-modules.git] / README.md
index 9934d2ef35eb3fb6a604d444ce09328e436da01e..7b04cd83b04991153ce8f7282ef3203a24489661 100644 (file)
--- a/README.md
+++ b/README.md
@@ -13,9 +13,9 @@ distribution kernel, with no need for additional patches.
 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
@@ -42,18 +42,31 @@ kernel, do:
     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
@@ -82,8 +95,21 @@ available from LTTng:
   - `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.
@@ -95,7 +121,7 @@ to print traces as a human-readable text log.
 Support
 -------
 
-Linux kernels >= 2.6.36 are supported.
+Linux kernels >= 3.0 are supported.
 
 
 Notes
This page took 0.023508 seconds and 4 git commands to generate.