[LTP] [PATCH 1/2] Add tst_is_compat_mode() helper function

Martin Doucha
2024-01-17T17:30:51Z

New helper function to simplify checks whether the test process runs
in e.g. 32bit compat mode on 64bit kernel.

Signed-off-by: Martin Doucha <mdoucha@suse.cz>
---
include/tst_kernel.h | 5 +++++
lib/tst_kernel.c | 6 ++++++
lib/tst_test.c | 2 +-
3 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/include/tst_kernel.h b/include/tst_kernel.h
index 9d3a8d315..89de79928 100644
--- a/include/tst_kernel.h
+++ b/include/tst_kernel.h
@@ -10,6 +10,11 @@
*/
int tst_kernel_bits(void);

+/*
+ * Returns non-zero if the test process is running in compat mode.
+ */
+int tst_is_compat_mode(void);
+
/*
* Checks if the kernel module is built-in.
*
diff --git a/lib/tst_kernel.c b/lib/tst_kernel.c
index 51e4daa09..7fd1af871 100644
--- a/lib/tst_kernel.c
+++ b/lib/tst_kernel.c
@@ -23,6 +23,7 @@
#include "test.h"
#include "tst_kernel.h"
#include "old_safe_stdio.h"
+#include "lapi/abisize.h"

static int get_kernel_bits_from_uname(struct utsname *buf)
{
@@ -90,6 +91,11 @@ int tst_kernel_bits(void)
return kernel_bits;
}

+int tst_is_compat_mode(void)
+{
+ return TST_ABI != tst_kernel_bits();
+}
+
static int tst_search_driver_(const char *driver, const char *file)
{
struct stat st;
diff --git a/lib/tst_test.c b/lib/tst_test.c
index bcf2c4555..187358936 100644
--- a/lib/tst_test.c
+++ b/lib/tst_test.c
@@ -1194,7 +1194,7 @@ static void do_setup(int argc, char *argv[])
if (tst_test->skip_in_secureboot && tst_secureboot_enabled() > 0)
tst_brk(TCONF, "SecureBoot enabled, skipping test");

- if (tst_test->skip_in_compat && TST_ABI != tst_kernel_bits())
+ if (tst_test->skip_in_compat && tst_is_compat_mode())
tst_brk(TCONF, "Not supported in 32-bit compat mode");

if (tst_test->needs_cmds) {
--
2.42.1