lttng-abi: Document ioctl numbers reserved by lttng-abi-old.h
[lttng-modules.git] / README.md
index f87b47bc468a24bb1ea758cff97bdb03c5b2a5c5..450f3630d582ebf63f47161e93c23cacb59fd544 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,30 @@ 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).
 
 
 ### Supported (optional) kernel config options
@@ -82,8 +94,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,11 +120,7 @@ to print traces as a human-readable text log.
 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
This page took 0.026236 seconds and 4 git commands to generate.