tracing: Tracing infrastructure

Add a new feature "tracing" that enables tracing functionality via the
"tracer" crate (sadly features and crates cannot share the same name.)

Setup: tracer::start()

The main functionality is a tracer::trace_scope()! macro that will add
trace points for the duration of the scope. Tracing events are per
thread.

Finish: tracer::end() this will write the trace file (pretty printed
JSON) to a file in the current directory.

Signed-off-by: Rob Bradford <robert.bradford@intel.com>
This commit is contained in:
Rob Bradford
2022-06-21 15:01:26 +01:00
parent 56f163170c
commit b35e6f3018
7 changed files with 238 additions and 0 deletions

13
Cargo.lock generated
View File

@@ -175,6 +175,7 @@ dependencies = [
"signal-hook",
"test_infra",
"thiserror",
"tracer",
"vm-memory",
"vmm",
"vmm-sys-util",
@@ -1197,6 +1198,17 @@ dependencies = [
"syn",
]
[[package]]
name = "tracer"
version = "0.1.0"
dependencies = [
"libc",
"log",
"once_cell",
"serde",
"serde_json",
]
[[package]]
name = "unicode-ident"
version = "1.0.4"
@@ -1516,6 +1528,7 @@ dependencies = [
"serial_buffer",
"signal-hook",
"thiserror",
"tracer",
"uuid",
"versionize",
"versionize_derive",