[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <2e0a915bf97d241eced54efa540c9a11a1996c27.1565676440.git-series.knut.omang@oracle.com>
Date: Tue, 13 Aug 2019 08:09:29 +0200
From: Knut Omang <knut.omang@...cle.com>
To: linux-kselftest@...r.kernel.org, linux-kernel@...r.kernel.org
Cc: linux-doc@...r.kernel.org, linux-kbuild@...r.kernel.org,
Shuah Khan <shuah@...nel.org>,
Jonathan Corbet <corbet@....net>,
Masahiro Yamada <yamada.masahiro@...ionext.com>,
Michal Marek <michal.lkml@...kovi.net>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Shreyans Devendra Doshi <0xinfosect0r@...il.com>,
Alan Maguire <alan.maguire@...cle.com>,
Brendan Higgins <brendanhiggins@...gle.com>,
Kevin Hilman <khilman@...libre.com>,
Hidenori Yamaji <hidenori.yamaji@...y.com>,
Frank Rowand <frowand.list@...il.com>,
Timothy Bird <Tim.Bird@...y.com>,
Luis Chamberlain <mcgrof@...nel.org>,
"Theodore Ts'o" <tytso@....edu>, Daniel Vetter <daniel@...ll.ch>,
Stephen Boyd <sboyd@...nel.org>,
Knut Omang <knut.omang@...cle.com>
Subject: [RFC 14/19] ktf: Internal debugging facilities
Utilities for convenient and runtime enabled/disabled
printk debugging mainly intended for debugging ktf itself and subtle
early issues with execution/running of tests.
ktf_debug.h: User mode debug function definitions
Signed-off-by: Knut Omang <knut.omang@...cle.com>
---
tools/testing/selftests/ktf/lib/ktf_debug.cc | 20 +++++++-
tools/testing/selftests/ktf/lib/ktf_debug.h | 59 +++++++++++++++++++++-
2 files changed, 79 insertions(+)
create mode 100644 tools/testing/selftests/ktf/lib/ktf_debug.cc
create mode 100644 tools/testing/selftests/ktf/lib/ktf_debug.h
diff --git a/tools/testing/selftests/ktf/lib/ktf_debug.cc b/tools/testing/selftests/ktf/lib/ktf_debug.cc
new file mode 100644
index 0000000..18ff443
--- /dev/null
+++ b/tools/testing/selftests/ktf/lib/ktf_debug.cc
@@ -0,0 +1,20 @@
+/* Copyright (c) 2012 Oracle Corporation. All rights reserved
+ *
+ * SPDX-License-Identifier: GPL-2.0
+ */
+
+#include "ktf_debug.h"
+#include <stdlib.h>
+
+unsigned long ktf_debug_mask = 0;
+
+
+void ktf_debug_init()
+{
+ ktf_debug_mask = 0;
+ char* dbg_mask_str = getenv("KTF_DEBUG_MASK");
+ if (dbg_mask_str) {
+ ktf_debug_mask = strtol(dbg_mask_str, NULL, 0);
+ log(KTF_INFO_V, "debug mask set to 0x%lx\n", ktf_debug_mask);
+ }
+}
diff --git a/tools/testing/selftests/ktf/lib/ktf_debug.h b/tools/testing/selftests/ktf/lib/ktf_debug.h
new file mode 100644
index 0000000..dc761a4
--- /dev/null
+++ b/tools/testing/selftests/ktf/lib/ktf_debug.h
@@ -0,0 +1,59 @@
+/* Copyright (c) 2012 Oracle Corporation. All rights reserved
+ * Author: Knut Omang <knut.omang@...cle.com>
+ *
+ * SPDX-License-Identifier: GPL-2.0
+ *
+ * ktf_debug.h: User mode debug function definitions
+ * - intended for test debugging.
+ *
+ * Enabled by setting bits in the environment variable KTF_DEBUG_MASK
+ */
+
+#ifndef _KTF_DEBUG_H
+#define _KTF_DEBUG_H
+#include <time.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <pthread.h>
+#include <unistd.h>
+#include <sys/syscall.h>
+
+extern unsigned long ktf_debug_mask;
+
+
+#define KTF_ERR 0x1
+#define KTF_WARN 0x2
+#define KTF_INFO 0x4
+#define KTF_INFO_V 0x100
+#define KTF_MR 0x2000
+#define KTF_DEBUG 0x10000
+#define KTF_POLL 0x20000
+#define KTF_EVENT 0x40000
+#define KTF_DEBUG_V 0x1000000
+#define KTF_DUMP 0x2000000
+
+/* Call this to initialize the debug logic from
+ * environment KTF_DEBUG_MASK
+ */
+void ktf_debug_init();
+
+#define log(level, format, arg...) \
+do {\
+ if (level & ktf_debug_mask) {\
+ char _tm[30]; \
+ time_t _tv = time(NULL);\
+ ctime_r(&_tv,_tm);\
+ _tm[24] = '\0';\
+ fprintf(stderr, "%s [%ld] %s: " format, \
+ _tm, (long unsigned int) pthread_self(), __func__, ## arg); \
+ }\
+} while (0)
+
+#define logs(class, stmt_list) \
+ do { \
+ if (ktf_debug_mask & class) { \
+ stmt_list; \
+ } \
+ } while (0)
+
+#endif
--
git-series 0.9.1
Powered by blists - more mailing lists