|
| 1 | +# LinuxTracepoints Change Log |
| 2 | + |
| 3 | +## v1.3.4 (TBD) |
| 4 | + |
| 5 | +- libtracepoint-control: New `tracepoint-collect` tool that records tracepoint |
| 6 | + events into a perf.data file. |
| 7 | +- libtracepoint-control: TracepointSession SavePerfDataFile adds a |
| 8 | + `PERF_RECORD_FINISHED_INIT` record to the generated perf.data file. |
| 9 | +- libeventheader: tool `eventheader-register` deleted. Instead, use |
| 10 | + `tracepoint-register` from libtracepoint. |
| 11 | + |
| 12 | +## v1.3.3 (2024-04-15) |
| 13 | + |
| 14 | +- BUG FIX: EADDRINUSE returned during TraceLoggingRegister on newer kernels. |
| 15 | + The "name already in use" detection splits on whitespace, while all other |
| 16 | + processing splits on semicolon. Fix by adding space after each semicolon |
| 17 | + in `EVENTHEADER_COMMAND_TYPES`. |
| 18 | +- libtracepoint-decode: In pipe mode, load event names at FinishedInit instead |
| 19 | + of HeaderLastFeature since not all traces emit HeaderLastFeature. |
| 20 | +- libtracepoint-decode: Recognize files from LP32 systems as 32-bit. |
| 21 | +- libtracepoint: new tool `tracepoint-register` for pre-registering |
| 22 | + tracepoints. |
| 23 | +- libeventheader: existing tool `eventheader-register` is deprecated in |
| 24 | + favor of `tracepoint-register`. |
| 25 | +- libeventheader-decode-dotnet: Moved to separate repository |
| 26 | + [LinuxTracepoints-Net](https://github.com/microsoft/LinuxTracepoints-Net). |
| 27 | + |
| 28 | +## v1.3.2 (2024-02-27) |
| 29 | + |
| 30 | +- Bug fix: Open `user_events_data` for `O_WRONLY` instead of `O_RDWR`. |
| 31 | + |
| 32 | +## v1.3.1 (2024-01-11) |
| 33 | + |
| 34 | +- `TracepointSession` supports per-CPU buffer sizes (including 0) to allow |
| 35 | + memory usage optimization when trace producers are known to be bound to |
| 36 | + specific CPUs. |
| 37 | +- `TracepointSession` uses `PERF_ATTR_SIZE_VER3` for the size of |
| 38 | + `perf_event_attr` to minimize the chance of incompatibilities. |
| 39 | + |
| 40 | +## v1.3.0 (2023-11-27) |
| 41 | + |
| 42 | +- **Breaking changes** to `PerfDataFile`: |
| 43 | + - `dataFile.AttrCount()` method replaced by `EventDescCount()` method. |
| 44 | + - `dataFile.Attr(index)` method replaced by `EventDesc(index)` method. |
| 45 | + The returned `PerfEventDesc` object contains an `attr` pointer. |
| 46 | + - `dataFile.EventDescById(id)` method replaced by `FindEventDescById(id)`. |
| 47 | +- **Breaking changes** to `PerfSampleEventInfo`: |
| 48 | + - `eventInfo.session` field renamed to `session_info`. |
| 49 | + - `eventInfo.attr` field replaced by `Attr()` method. |
| 50 | + - `eventInfo.name` field replaced by `Name()` method. |
| 51 | + - `eventInfo.sample_type` field replaced by `SampleType()` method. |
| 52 | + - `eventInfo.raw_meta` field replaced by `Metadata()` method. |
| 53 | +- **Breaking changes** to `TracepointSession`: |
| 54 | + - `session.EnableTracePoint(...)` method renamed to `EnableTracepoint(...)`. |
| 55 | + - `session.DisableTracePoint(...)` method renamed to `DisableTracepoint(...)`. |
| 56 | +- `EventFormatter` formats timestamps as date-time if clock information is |
| 57 | + available in the event metadata. If clock information is not present, it |
| 58 | + continues to format timestamps as seconds. |
| 59 | +- `TracepointSession` provides `SavePerfDataFile(filename)` method to save |
| 60 | + the current contents of the session buffers into a `perf.data` file. |
| 61 | +- `TracepointSession` now includes ID in default sample type. |
| 62 | +- `TracepointSession` records clock information from the session. |
| 63 | +- `TracepointSession` provides access to information about the tracepoints |
| 64 | + that have been added to the session (metadata, status, statistics). |
| 65 | +- `PerfDataFile` decodes clock information from perf.data files if present. |
| 66 | +- `PerfDataFile` provides access to more metadata via `PerfEventDesc` struct. |
| 67 | +- `PerfDataFile` provides `EventDataSize` for determining the size of an event. |
| 68 | +- New `PerfDataFileWriter` class for generating `perf.data` files. |
| 69 | +- Changed procedure for locating the `user_events_data` file. |
| 70 | + - Old: parse `/proc/mounts` to determine the `tracefs` or `debugfs` mount |
| 71 | + point, then use that as the root for the `user_events_data` path. |
| 72 | + - New: try `/sys/kernel/tracing/user_events_data`; if that doesn't exist, |
| 73 | + parse `/proc/mounts` to find the `tracefs` or `debugfs` mount point. |
| 74 | + - Rationale: Probe an absolute path so that containers don't have to |
| 75 | + create a fake `/proc/mounts` and for efficiency in the common case. |
| 76 | + |
| 77 | +## v1.2.1 (2023-07-24) |
| 78 | + |
| 79 | +- Prefer `user_events_data` from `tracefs` over `user_events_data` from |
| 80 | + `debugfs`. |
| 81 | + |
| 82 | +## v1.2 (2023-06-27) |
| 83 | + |
| 84 | +- Added "Preregister" methods to the `TracepointCache` class so that a |
| 85 | + controller can pre-register events that it wants to collect. |
| 86 | +- If no consumers have enabled a tracepoint, the kernel now returns `EBADF`. |
| 87 | + The provider APIs have been updated to be consistent with the new behavior. |
| 88 | + |
| 89 | +## v1.1 (2023-06-20) |
| 90 | + |
| 91 | +- Add namespaces to the C++ APIs. |
| 92 | +- Move non-eventheader logic from eventheader-decode to new tracepoint-decode |
| 93 | + library. |
| 94 | +- Add new libtracepoint-control library. |
0 commit comments