All of lore.kernel.org
 help / color / mirror / Atom feed
From: Philippe  Gerum <rpm@xenomai.org>
To: xenomai@xenomai.org
Subject: [PATCH Dovetail 03/13] cobalt/trace: pipeline: abstract trace calls
Date: Sat,  2 Jan 2021 10:33:43 +0100	[thread overview]
Message-ID: <20210102093353.3195090-4-rpm@xenomai.org> (raw)
In-Reply-To: <20210102093353.3195090-1-rpm@xenomai.org>

From: Philippe Gerum <rpm@xenomai.org>

Unlike the I-pipe, Dovetail comes with no specific tracer, tracepoints
can be sent to common ftrace-based tracers, with the 'function' tracer
reporting Dovetail-specific information such as the current execution
stage, and the real & virtual interrupt states (hard disabled/enabled,
stalled/unstalled) for the current context.

In other words, ftrace's 'function' tracer with Dovetail is similar to
the I-pipe specific tracer.

Since we can use ftrace through the regular kernel interface with
Dovetail, the legacy trace interface can move to the I-pipe section.

No functional change is introduced.

Signed-off-by: Philippe Gerum <rpm@xenomai.org>
---
 include/cobalt/kernel/ipipe/pipeline/trace.h | 111 +++++++++++++++++++
 include/cobalt/kernel/trace.h                | 101 +----------------
 kernel/drivers/testing/timerbench.c          |  12 +-
 3 files changed, 120 insertions(+), 104 deletions(-)
 create mode 100644 include/cobalt/kernel/ipipe/pipeline/trace.h

diff --git a/include/cobalt/kernel/ipipe/pipeline/trace.h b/include/cobalt/kernel/ipipe/pipeline/trace.h
new file mode 100644
index 000000000..d92e57a63
--- /dev/null
+++ b/include/cobalt/kernel/ipipe/pipeline/trace.h
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2006 Jan Kiszka <jan.kiszka@web.de>.
+ *
+ * Xenomai is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation; either version 2 of the License,
+ * or (at your option) any later version.
+ *
+ * Xenomai is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Xenomai; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ */
+#ifndef _COBALT_KERNEL_IPIPE_TRACE_H
+#define _COBALT_KERNEL_IPIPE_TRACE_H
+
+#include <linux/types.h>
+#include <linux/kconfig.h>
+#include <linux/ipipe_trace.h>
+#include <cobalt/uapi/kernel/trace.h>
+
+static inline int xntrace_max_begin(unsigned long v)
+{
+	ipipe_trace_begin(v);
+	return 0;
+}
+
+static inline int xntrace_max_end(unsigned long v)
+{
+	ipipe_trace_end(v);
+	return 0;
+}
+
+static inline int xntrace_max_reset(void)
+{
+	ipipe_trace_max_reset();
+	return 0;
+}
+
+static inline int xntrace_user_start(void)
+{
+	return ipipe_trace_frozen_reset();
+}
+
+static inline int xntrace_user_stop(unsigned long v)
+{
+	ipipe_trace_freeze(v);
+	return 0;
+}
+
+static inline int xntrace_user_freeze(unsigned long v, int once)
+{
+	int ret = 0;
+
+	if (!once)
+		ret = ipipe_trace_frozen_reset();
+
+	ipipe_trace_freeze(v);
+
+	return ret;
+}
+
+static inline int xntrace_special(unsigned char id, unsigned long v)
+{
+	ipipe_trace_special(id, v);
+	return 0;
+}
+
+static inline int xntrace_special_u64(unsigned char id,
+				      unsigned long long v)
+{
+	ipipe_trace_special(id, (unsigned long)(v >> 32));
+	ipipe_trace_special(id, (unsigned long)(v & 0xFFFFFFFF));
+	return 0;
+}
+
+static inline int xntrace_pid(pid_t pid, short prio)
+{
+	ipipe_trace_pid(pid, prio);
+	return 0;
+}
+
+static inline int xntrace_tick(unsigned long delay_ticks)
+{
+	ipipe_trace_event(0, delay_ticks);
+	return 0;
+}
+
+static inline int xntrace_panic_freeze(void)
+{
+	ipipe_trace_panic_freeze();
+	return 0;
+}
+
+static inline int xntrace_panic_dump(void)
+{
+	ipipe_trace_panic_dump();
+	return 0;
+}
+
+static inline bool xntrace_enabled(void)
+{
+	return IS_ENABLED(CONFIG_IPIPE_TRACE);
+}
+
+#endif /* !_COBALT_KERNEL_IPIPE_TRACE_H */
diff --git a/include/cobalt/kernel/trace.h b/include/cobalt/kernel/trace.h
index 5f2b6ca2a..e46dd4ebd 100644
--- a/include/cobalt/kernel/trace.h
+++ b/include/cobalt/kernel/trace.h
@@ -1,105 +1,10 @@
 /*
- * Copyright (C) 2006 Jan Kiszka <jan.kiszka@web.de>.
- *
- * Xenomai is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published
- * by the Free Software Foundation; either version 2 of the License,
- * or (at your option) any later version.
- *
- * Xenomai is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Xenomai; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
- * 02111-1307, USA.
+ * SPDX-License-Identifier: GPL-2.0
  */
+
 #ifndef _COBALT_KERNEL_TRACE_H
 #define _COBALT_KERNEL_TRACE_H
 
-#include <linux/types.h>
-#include <linux/ipipe_trace.h>
-#include <cobalt/uapi/kernel/trace.h>
-
-static inline int xntrace_max_begin(unsigned long v)
-{
-	ipipe_trace_begin(v);
-	return 0;
-}
-
-static inline int xntrace_max_end(unsigned long v)
-{
-	ipipe_trace_end(v);
-	return 0;
-}
-
-static inline int xntrace_max_reset(void)
-{
-	ipipe_trace_max_reset();
-	return 0;
-}
-
-static inline int xntrace_user_start(void)
-{
-	return ipipe_trace_frozen_reset();
-}
-
-static inline int xntrace_user_stop(unsigned long v)
-{
-	ipipe_trace_freeze(v);
-	return 0;
-}
-
-static inline int xntrace_user_freeze(unsigned long v, int once)
-{
-	int ret = 0;
-
-	if (!once)
-		ret = ipipe_trace_frozen_reset();
-
-	ipipe_trace_freeze(v);
-
-	return ret;
-}
-
-static inline int xntrace_special(unsigned char id, unsigned long v)
-{
-	ipipe_trace_special(id, v);
-	return 0;
-}
-
-static inline int xntrace_special_u64(unsigned char id,
-				      unsigned long long v)
-{
-	ipipe_trace_special(id, (unsigned long)(v >> 32));
-	ipipe_trace_special(id, (unsigned long)(v & 0xFFFFFFFF));
-	return 0;
-}
-
-static inline int xntrace_pid(pid_t pid, short prio)
-{
-	ipipe_trace_pid(pid, prio);
-	return 0;
-}
-
-static inline int xntrace_tick(unsigned long delay_ticks)
-{
-	ipipe_trace_event(0, delay_ticks);
-	return 0;
-}
-
-static inline int xntrace_panic_freeze(void)
-{
-	ipipe_trace_panic_freeze();
-	return 0;
-}
-
-static inline int xntrace_panic_dump(void)
-{
-	ipipe_trace_panic_dump();
-	return 0;
-}
+#include <pipeline/trace.h>
 
 #endif /* !_COBALT_KERNEL_TRACE_H */
diff --git a/kernel/drivers/testing/timerbench.c b/kernel/drivers/testing/timerbench.c
index 8b91bae9b..31f0bea76 100644
--- a/kernel/drivers/testing/timerbench.c
+++ b/kernel/drivers/testing/timerbench.c
@@ -19,7 +19,7 @@
 #include <linux/module.h>
 #include <linux/slab.h>
 #include <linux/semaphore.h>
-#include <linux/ipipe_trace.h>
+#include <cobalt/kernel/trace.h>
 #include <cobalt/kernel/arith.h>
 #include <rtdm/testing.h>
 #include <rtdm/driver.h>
@@ -78,13 +78,13 @@ static void eval_inner_loop(struct rt_tmbench_context *ctx, __s32 dt)
 		ctx->curr.min = dt;
 	ctx->curr.avg += dt;
 
-#ifdef CONFIG_IPIPE_TRACE
-	if (ctx->freeze_max && (dt > ctx->result.overall.max) && !ctx->warmup) {
-		ipipe_trace_frozen_reset();
-		ipipe_trace_freeze(dt);
+	if (xntrace_enabled() &&
+		ctx->freeze_max &&
+		(dt > ctx->result.overall.max) &&
+		!ctx->warmup) {
+		xntrace_user_freeze(dt, false);
 		ctx->result.overall.max = dt;
 	}
-#endif /* CONFIG_IPIPE_TRACE */
 
 	ctx->date += ctx->period;
 
-- 
2.26.2



  parent reply	other threads:[~2021-01-02  9:33 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-02  9:33 [PATCH Dovetail 00/13] Keep on abstracting the pipeline interface Philippe Gerum
2021-01-02  9:33 ` [PATCH Dovetail 01/13] cobalt/thread: pipeline: abstract threadinfo accessor Philippe Gerum
2021-01-08  9:02   ` Jan Kiszka
2021-01-02  9:33 ` [PATCH Dovetail 02/13] cobalt/apc: pipeline: abstract interface for deferred routine calls Philippe Gerum
2021-01-02  9:33 ` Philippe Gerum [this message]
2021-01-02  9:33 ` [PATCH Dovetail 04/13] cobalt/lock: pipeline: abstract hard lock API Philippe Gerum
2021-01-02  9:33 ` [PATCH Dovetail 05/13] cobalt/kernel: pipeline: abstract execution stage predicates Philippe Gerum
2021-01-02  9:33 ` [PATCH Dovetail 06/13] cobalt/sched, clock: pipeline: abstract IPI management Philippe Gerum
2021-01-08  9:40   ` Jan Kiszka
2021-01-02  9:33 ` [PATCH Dovetail 07/13] cobalt/clock: pipeline: make HOSTRT depend on IPIPE Philippe Gerum
2021-01-07 13:52   ` Jan Kiszka
2021-01-09 10:45     ` Philippe Gerum
2021-01-02  9:33 ` [PATCH Dovetail 08/13] cobalt/build: pipeline: select IPIPE layer only if present Philippe Gerum
2021-01-02  9:33 ` [PATCH Dovetail 09/13] cobalt/clock: pipeline: abstract clock, timer access services Philippe Gerum
2021-01-02  9:33 ` [PATCH Dovetail 10/13] cobalt/wrappers: pipeline: abstract pipeline-related bits Philippe Gerum
2021-01-07 13:56   ` Jan Kiszka
2021-01-11 12:59   ` Jan Kiszka
2021-01-02  9:33 ` [PATCH Dovetail 11/13] cobalt/timer: pipeline: abstract tick management Philippe Gerum
2021-01-02  9:33 ` [PATCH Dovetail 12/13] cobalt/debug: pipeline: abstract panic prep call Philippe Gerum
2021-01-02  9:33 ` [PATCH Dovetail 13/13] cobalt/syscall: pipeline: abstract syscall entry points Philippe Gerum
2021-01-07 14:08   ` Jan Kiszka
2021-01-09 10:58     ` Philippe Gerum
2021-01-11 12:11       ` Jan Kiszka

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=20210102093353.3195090-4-rpm@xenomai.org \
    --to=rpm@xenomai.org \
    --cc=xenomai@xenomai.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 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.