eventheader_dynamic 0.5.0

Rust API for runtime-specified eventheader-encoded Linux Tracepoints via user_events
Documentation
# Dynamic EventHeader tracepoint logging for Rust

[![Crates.io][crates-badge]][crates-url]
[![Documentation][docs-badge]][docs-url]
[![MIT licensed][mit-badge]][mit-url]
[![Build Status][actions-badge]][actions-url]
![maintenance status][maint-badge]

[crates-badge]: https://img.shields.io/crates/v/eventheader_dynamic.svg
[crates-url]: https://crates.io/crates/eventheader_dynamic
[docs-badge]: https://docs.rs/eventheader_dynamic/badge.svg
[docs-url]: https://docs.rs/eventheader_dynamic
[mit-badge]: https://img.shields.io/badge/license-MIT-blue.svg
[mit-url]: https://github.com/microsoft/LinuxTracepoints-Rust/blob/main/LICENSE
[actions-badge]: https://github.com/microsoft/LinuxTracepoints-Rust/actions/workflows/Rust.yml/badge.svg
[actions-url]: https://github.com/microsoft/LinuxTracepoints-Rust/actions/workflows/Rust.yml
[maint-badge]: https://img.shields.io/badge/maintenance-experimental-blue.svg

The `eventheader_dynamic` crate provides a flexible way to log
`EventHeader`-encoded
[Tracepoints](https://www.kernel.org/doc/html/latest/trace/tracepoints.html)
via the Linux [user_events](https://docs.kernel.org/trace/user_events.html)
system. The events can be generated and collected on Linux 6.4 or later
(requires the `user_events` kernel feature to be enabled, the `tracefs` or
`debugfs` filesystem to be mounted, and appropriate permissions configured for
the `/sys/kernel/.../tracing/user_events_data` file).

This "dynamic" implementation is more flexible than the implementation in the
`eventheader` crate. For example, it supports runtime-defined schema and can
easily log arrays of strings. However, it is harder to use, it has higher
runtime costs, and it depends on the `alloc` crate. This dynamic implementation
is intended for use only when the set of events cannot be determined at
compile-time. For example, `eventheader_dynamic` might be used to implement a
middle-layer library providing tracing support to a scripting language like
JavaScript or Python. In other cases, use the `eventheader` crate instead of
this crate.