From: "Tzvetomir Stoyanov (VMware)" <tz.stoyanov@gmail.com>
To: rostedt@goodmis.org
Cc: linux-trace-devel@vger.kernel.org
Subject: [PATCH v26 02/15] trace-cmd: Add trace-cmd library APIs for ftrace clock name
Date: Thu, 21 Jan 2021 09:44:43 +0200 [thread overview]
Message-ID: <20210121074456.157658-3-tz.stoyanov@gmail.com> (raw)
In-Reply-To: <20210121074456.157658-1-tz.stoyanov@gmail.com>
Added enum with ftrace clock IDs and APIs to convert ftrace name to ID
and vice versa, as part of libtracecmd. The clock items in the enum are
organized as a bitmask, as it will be used by the timestamp
synchronization protocol to declare supported ftrace clocks.
Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com>
---
.../include/private/trace-cmd-private.h | 16 ++++++
lib/trace-cmd/trace-util.c | 52 +++++++++++++++++++
2 files changed, 68 insertions(+)
diff --git a/lib/trace-cmd/include/private/trace-cmd-private.h b/lib/trace-cmd/include/private/trace-cmd-private.h
index 08e98a50..0d323947 100644
--- a/lib/trace-cmd/include/private/trace-cmd-private.h
+++ b/lib/trace-cmd/include/private/trace-cmd-private.h
@@ -393,6 +393,22 @@ int tracecmd_msg_recv_time_sync(struct tracecmd_msg_handle *msg_handle,
unsigned int *sync_msg_id,
unsigned int *payload_size, char **payload);
+enum tracecmd_clocks {
+ TRACECMD_CLOCK_UNKNOWN = 0,
+ TRACECMD_CLOCK_LOCAL = 1,
+ TRACECMD_CLOCK_GLOBAL = 1 << 1,
+ TRACECMD_CLOCK_COUNTER = 1 << 2,
+ TRACECMD_CLOCK_UPTIME = 1 << 3,
+ TRACECMD_CLOCK_PERF = 1 << 4,
+ TRACECMD_CLOCK_MONO = 1 << 5,
+ TRACECMD_CLOCK_MONO_RAW = 1 << 6,
+ TRACECMD_CLOCK_BOOT = 1 << 7,
+ TRACECMD_CLOCK_X86_TSC = 1 << 8
+};
+
+enum tracecmd_clocks tracecmd_clock_str2id(const char *clock);
+const char *tracecmd_clock_id2str(enum tracecmd_clocks clock);
+
/* --- Timestamp synchronization --- */
#define TRACECMD_TSYNC_PNAME_LENGTH 16
diff --git a/lib/trace-cmd/trace-util.c b/lib/trace-cmd/trace-util.c
index 8caec7c1..9661b266 100644
--- a/lib/trace-cmd/trace-util.c
+++ b/lib/trace-cmd/trace-util.c
@@ -33,6 +33,58 @@ static bool debug;
static FILE *logfp;
+const static struct {
+ const char *clock_str;
+ enum tracecmd_clocks clock_id;
+} trace_clocks[] = {
+ {"local", TRACECMD_CLOCK_LOCAL},
+ {"global", TRACECMD_CLOCK_GLOBAL},
+ {"counter", TRACECMD_CLOCK_COUNTER},
+ {"uptime", TRACECMD_CLOCK_UPTIME},
+ {"perf", TRACECMD_CLOCK_PERF},
+ {"mono", TRACECMD_CLOCK_MONO},
+ {"mono_raw", TRACECMD_CLOCK_MONO_RAW},
+ {"boot", TRACECMD_CLOCK_BOOT},
+ {"x86-tsc", TRACECMD_CLOCK_X86_TSC},
+ {NULL, -1}
+};
+
+/**
+ * tracecmd_clock_str2id - Convert ftrace clock name to clock ID
+ * @clock: Ftrace clock name
+ * Returns ID of the ftrace clock
+ */
+enum tracecmd_clocks tracecmd_clock_str2id(const char *clock)
+{
+ int i;
+
+ if (!clock)
+ return TRACECMD_CLOCK_UNKNOWN;
+
+ for (i = 0; trace_clocks[i].clock_str; i++) {
+ if (!strncmp(clock, trace_clocks[i].clock_str,
+ strlen(trace_clocks[i].clock_str)))
+ return trace_clocks[i].clock_id;
+ }
+ return TRACECMD_CLOCK_UNKNOWN;
+}
+
+/**
+ * tracecmd_clock_id2str - Convert clock ID to ftare clock name
+ * @clock: Clock ID
+ * Returns name of a ftrace clock
+ */
+const char *tracecmd_clock_id2str(enum tracecmd_clocks clock)
+{
+ int i;
+
+ for (i = 0; trace_clocks[i].clock_str; i++) {
+ if (trace_clocks[i].clock_id == clock)
+ return trace_clocks[i].clock_str;
+ }
+ return NULL;
+}
+
/**
* tracecmd_set_debug - Set debug mode of the tracecmd library
* @set_debug: The new "debug" mode. If true, the tracecmd library is
--
2.29.2
next prev parent reply other threads:[~2021-01-21 7:47 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-21 7:44 [PATCH v26 00/15] Timestamp synchronization of host - guest tracing session Tzvetomir Stoyanov (VMware)
2021-01-21 7:44 ` [PATCH v26 01/15] trace-cmd: Replace time sync protocol ID with string Tzvetomir Stoyanov (VMware)
2021-01-21 7:44 ` Tzvetomir Stoyanov (VMware) [this message]
2021-01-21 7:44 ` [PATCH v26 03/15] trace-cmd: Move VM related logic in a separate file Tzvetomir Stoyanov (VMware)
2021-01-21 7:44 ` [PATCH v26 04/15] trace-cmd: Add clock parameter to timestamp synchronization plugins Tzvetomir Stoyanov (VMware)
2021-01-21 7:44 ` [PATCH v26 05/15] trace-cmd: Add role " Tzvetomir Stoyanov (VMware)
2021-01-21 7:44 ` [PATCH v26 06/15] trace-cmd: Add host / guest role in timestamp synchronization context Tzvetomir Stoyanov (VMware)
2021-01-21 7:44 ` [PATCH v26 07/15] trace-cmd: Add guest CPU count PID in tracecmd_time_sync struct Tzvetomir Stoyanov (VMware)
2021-01-21 7:44 ` [PATCH v26 08/15] trace-cmd: Add scaling ratio for timestamp correction Tzvetomir Stoyanov (VMware)
2021-01-21 7:44 ` [PATCH v26 09/15] trace-cmd: Add time sync protocol flags Tzvetomir Stoyanov (VMware)
2021-01-21 7:44 ` [PATCH v26 10/15] trace-cmd: Add timestamp synchronization per vCPU Tzvetomir Stoyanov (VMware)
2021-01-28 2:09 ` Steven Rostedt
2021-01-21 7:44 ` [PATCH v26 11/15] trace-cmd: Define a macro for packed structures Tzvetomir Stoyanov (VMware)
2021-01-28 22:44 ` Steven Rostedt
2021-01-21 7:44 ` [PATCH v26 12/15] trace-cmd: Add dummy function to initialize timestamp sync logic Tzvetomir Stoyanov (VMware)
2021-01-21 7:44 ` [PATCH v26 13/15] trace-cmd: [POC] PTP-like algorithm for host - guest timestamp synchronization Tzvetomir Stoyanov (VMware)
2021-01-21 7:44 ` [PATCH v26 14/15] trace-cmd: Debug scripts for " Tzvetomir Stoyanov (VMware)
2021-01-21 7:44 ` [PATCH v26 15/15] trace-cmd [POC]: Add KVM timestamp synchronization plugin Tzvetomir Stoyanov (VMware)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210121074456.157658-3-tz.stoyanov@gmail.com \
--to=tz.stoyanov@gmail.com \
--cc=linux-trace-devel@vger.kernel.org \
--cc=rostedt@goodmis.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).