From 7c3ff3c665f59da8138686ffc3e82d1600c9b961 Mon Sep 17 00:00:00 2001 From: Konrad Sztyber Date: Tue, 31 Aug 2021 13:59:27 +0200 Subject: [PATCH] lib/trace_parser: method for retrieving tsc offset Signed-off-by: Konrad Sztyber Change-Id: I11fc341b4353c01cd933d6692cf97de3a3744a84 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/9432 Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins Reviewed-by: Jim Harris Reviewed-by: Aleksey Marchuk --- include/spdk/trace_parser.h | 10 ++++++++++ lib/trace_parser/spdk_trace_parser.map | 1 + lib/trace_parser/trace.cpp | 7 +++++++ 3 files changed, 18 insertions(+) diff --git a/include/spdk/trace_parser.h b/include/spdk/trace_parser.h index b59071b7d..4daf6eabc 100644 --- a/include/spdk/trace_parser.h +++ b/include/spdk/trace_parser.h @@ -92,6 +92,16 @@ void spdk_trace_parser_cleanup(struct spdk_trace_parser *parser); */ const struct spdk_trace_flags *spdk_trace_parser_get_flags(const struct spdk_trace_parser *parser); +/** + * Return the highest tsc out of first entries across all speicifed cores. This value can be used + * to select entries from the subset of time we have the data from all reactors. + * + * \param parser Parser object to be used. + * + * \return Offset in tsc. + */ +uint64_t spdk_trace_parser_get_tsc_offset(const struct spdk_trace_parser *parser); + #ifdef __cplusplus } #endif diff --git a/lib/trace_parser/spdk_trace_parser.map b/lib/trace_parser/spdk_trace_parser.map index ae58db77a..b10c67388 100644 --- a/lib/trace_parser/spdk_trace_parser.map +++ b/lib/trace_parser/spdk_trace_parser.map @@ -5,6 +5,7 @@ spdk_trace_parser_init; spdk_trace_parser_cleanup; spdk_trace_parser_get_flags; + spdk_trace_parser_get_tsc_offset; local: *; }; diff --git a/lib/trace_parser/trace.cpp b/lib/trace_parser/trace.cpp index ec8807751..7ce62448e 100644 --- a/lib/trace_parser/trace.cpp +++ b/lib/trace_parser/trace.cpp @@ -67,6 +67,7 @@ struct spdk_trace_parser { spdk_trace_parser(const spdk_trace_parser &) = delete; spdk_trace_parser &operator=(const spdk_trace_parser &) = delete; const spdk_trace_flags *flags() const { return &_histories->flags; } + uint64_t tsc_offset() const { return _tsc_offset; } private: void populate_events(spdk_trace_history *history, int num_entries); bool init(const spdk_trace_parser_opts *opts); @@ -264,3 +265,9 @@ spdk_trace_parser_get_flags(const struct spdk_trace_parser *parser) { return parser->flags(); } + +uint64_t +spdk_trace_parser_get_tsc_offset(const struct spdk_trace_parser *parser) +{ + return parser->tsc_offset(); +}