From: John Stultz via ltp <ltp@lists.linux.it>
To: ltp@lists.linux.it
Cc: kernel-team@android.com, John Stultz <jstultz@google.com>,
Darren Hart <darren@os.amperecomputing.com>
Subject: [LTP] [PATCH v2 6/6] sched_football: Add trace_marker messages if we're tracing
Date: Tue, 25 Jun 2024 16:52:35 -0700 [thread overview]
Message-ID: <20240625235245.2106313-7-jstultz@google.com> (raw)
In-Reply-To: <20240625235245.2106313-1-jstultz@google.com>
To further help with tracing, add trace_marker messages so we
can see exactly when the game starts and ends in the tracelog.
Cc: kernel-team@android.com
Cc: Cyril Hrubis <chrubis@suse.cz>
Cc: Darren Hart <darren@os.amperecomputing.com>
Signed-off-by: John Stultz <jstultz@google.com>
---
v2:
* Pulled trace marker writing out into librttest helper functions
as suggested by Cyril
---
| 5 +++
testcases/realtime/include/librttest.h | 13 ++++++++
testcases/realtime/lib/librttest.c | 32 +++++++++++++++++++
3 files changed, 50 insertions(+)
--git a/testcases/realtime/func/sched_football/sched_football.c b/testcases/realtime/func/sched_football/sched_football.c
index 40496cc22..b6ae692af 100644
--- a/testcases/realtime/func/sched_football/sched_football.c
+++ b/testcases/realtime/func/sched_football/sched_football.c
@@ -66,6 +66,7 @@
#include <pthread.h>
#include <sched.h>
#include <errno.h>
+#include <fcntl.h>
#include <sys/syscall.h>
#include <unistd.h>
#include <sys/prctl.h>
@@ -171,17 +172,21 @@ int referee(int game_length)
prctl(PR_SET_NAME, "referee", 0, 0, 0);
printf("Game On (%d seconds)!\n", game_length);
+ /* open trace marker early to avoid latency with the first message */
+ trace_marker_prep();
gettimeofday(&start, NULL);
now = start;
/* Start the game! */
tst_atomic_store(0, &the_ball);
+ atrace_marker_write("sched_football", "Game_started!");
/* Watch the game */
while ((now.tv_sec - start.tv_sec) < game_length) {
sleep(1);
gettimeofday(&now, NULL);
}
+ atrace_marker_write("sched_football", "Game_Over!");
final_ball = tst_atomic_load(&the_ball);
/* Blow the whistle */
printf("Game Over!\n");
diff --git a/testcases/realtime/include/librttest.h b/testcases/realtime/include/librttest.h
index 8733479e7..0a1bb0540 100644
--- a/testcases/realtime/include/librttest.h
+++ b/testcases/realtime/include/librttest.h
@@ -342,4 +342,17 @@ void latency_trace_stop(void);
*/
void latency_trace_print(void);
+/* trace_marker_prep: open trace_marker file (optional)
+ */
+void trace_marker_prep(void);
+
+/* trace_marker_write: write buf to trace_marker.
+ * Will open trace_marker file if not already open
+ */
+int trace_marker_write(char *buf, int len);
+
+/* atrace_marker_write: write atrace format message to trace_marker
+ */
+int atrace_marker_write(char *tag, char *msg);
+
#endif /* LIBRTTEST_H */
diff --git a/testcases/realtime/lib/librttest.c b/testcases/realtime/lib/librttest.c
index eaa623b72..191c667a1 100644
--- a/testcases/realtime/lib/librttest.c
+++ b/testcases/realtime/lib/librttest.c
@@ -732,3 +732,35 @@ void latency_trace_print(void)
{
read_and_print("/proc/latency_trace", STDOUT_FILENO);
}
+
+static int trace_marker_fd = -1;
+
+void trace_marker_prep(void)
+{
+ if (trace_marker_fd != -1)
+ return;
+ trace_marker_fd = open("/sys/kernel/tracing/trace_marker", O_RDWR, 0);
+}
+
+int trace_marker_write(char *buf, int len)
+{
+ if (trace_marker_fd == -1)
+ trace_marker_prep();
+
+ if (trace_marker_fd < 0)
+ return -1;
+
+ return write(trace_marker_fd, buf, len);
+}
+
+#define TRACE_BUF_LEN 256
+static char trace_buf[TRACE_BUF_LEN];
+
+int atrace_marker_write(char *tag, char *msg)
+{
+ /* Uses atrace format perfetto can visualize */
+ snprintf(trace_buf, TRACE_BUF_LEN, "I|%i|%s: %s\n", getpid(), tag, msg);
+ return trace_marker_write(trace_buf,
+ strnlen(trace_buf, TRACE_BUF_LEN));
+}
+
--
2.45.2.741.gdbec12cfda-goog
--
Mailing list info: https://lists.linux.it/listinfo/ltp
next prev parent reply other threads:[~2024-06-25 23:56 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-25 23:52 [LTP] [PATCH v2 0/6] sched_football: Re-add crazy fans and other cleanups John Stultz via ltp
2024-06-25 23:52 ` [LTP] [PATCH v2 1/6] sched_football: Drop use of sched_yeild() John Stultz via ltp
2024-06-25 23:52 ` [LTP] [PATCH v2 2/6] sched_football: Use atomic operations for ball John Stultz via ltp
2024-06-25 23:52 ` [LTP] [PATCH v2 3/6] sched_football: Re-add the crazy fans to interrupt everyone John Stultz via ltp
2024-06-25 23:52 ` [LTP] [PATCH v2 4/6] sched_football: Add a sleep before the game begins to get into steady state John Stultz via ltp
2024-06-25 23:52 ` [LTP] [PATCH v2 5/6] sched_football: Add prctrl calls to set thread comms John Stultz via ltp
2024-06-25 23:52 ` John Stultz via ltp [this message]
2024-06-26 11:49 ` [LTP] [PATCH v2 0/6] sched_football: Re-add crazy fans and other cleanups Cyril Hrubis
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=20240625235245.2106313-7-jstultz@google.com \
--to=ltp@lists.linux.it \
--cc=darren@os.amperecomputing.com \
--cc=jstultz@google.com \
--cc=kernel-team@android.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.