Blame SOURCES/strace-rh1600210-0002-tests-membarrier.c-fix-expected-output-on-nohz_full-.patch

3037e0
From c2bacdd427e44b07160f45f821725441a8284af4 Mon Sep 17 00:00:00 2001
3037e0
From: Eugene Syromyatnikov <evgsyr@gmail.com>
3037e0
Date: Thu, 8 Feb 2018 11:09:01 +0100
3037e0
Subject: [PATCH 2/2] tests/membarrier.c: fix expected output on nohz_full
3037e0
 systems
3037e0
3037e0
If nohz_full is enabled, MEMBARRIER_CMD_GLOBAL is not available.
3037e0
3037e0
* tests/membarrier.c: check availability of MEMBARRIER_CMD_GLOBAL
3037e0
separately.
3037e0
---
3037e0
 tests/membarrier.c | 36 +++++++++++++++++++-----------------
3037e0
 1 file changed, 19 insertions(+), 17 deletions(-)
3037e0
3037e0
[ ES: Also patch files in tests-m32 an tests-mx32 directories ]
3037e0
3037e0
diff --git a/tests/membarrier.c b/tests/membarrier.c
3037e0
index f195063..9c76be5 100644
3037e0
--- a/tests/membarrier.c
3037e0
+++ b/tests/membarrier.c
3037e0
@@ -44,34 +44,35 @@ main(void)
3037e0
 	printf("membarrier(0x3 /* MEMBARRIER_CMD_??? */, 255) = -1 %s (%m)\n",
3037e0
 	       errno2name());
3037e0
 	if (errno != ENOSYS) {
3037e0
+		const char *text_global;
3037e0
 		const char *text;
3037e0
 		int rc = syscall(__NR_membarrier, 0, 0);
3037e0
 
3037e0
-		switch (rc) {
3037e0
-		case 1:
3037e0
-			text = "MEMBARRIER_CMD_GLOBAL";
3037e0
+		assert(rc >= 0);
3037e0
+
3037e0
+		text_global = rc & 1 ? "MEMBARRIER_CMD_GLOBAL" : "";
3037e0
+
3037e0
+		switch (rc & ~1) {
3037e0
+		case 0:
3037e0
+			text = "";
3037e0
 			break;
3037e0
-		case 1|8:
3037e0
-			text = "MEMBARRIER_CMD_GLOBAL|"
3037e0
-			       "MEMBARRIER_CMD_PRIVATE_EXPEDITED";
3037e0
+		case 8:
3037e0
+			text = "MEMBARRIER_CMD_PRIVATE_EXPEDITED";
3037e0
 			break;
3037e0
-		case 1|8|16:
3037e0
-			text = "MEMBARRIER_CMD_GLOBAL|"
3037e0
-			       "MEMBARRIER_CMD_PRIVATE_EXPEDITED|"
3037e0
+		case 8|16:
3037e0
+			text = "MEMBARRIER_CMD_PRIVATE_EXPEDITED|"
3037e0
 			       "MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED";
3037e0
 			break;
3037e0
 
3037e0
-		case 1|2|4|8|16:
3037e0
-			text = "MEMBARRIER_CMD_GLOBAL|"
3037e0
-			       "MEMBARRIER_CMD_GLOBAL_EXPEDITED|"
3037e0
+		case 2|4|8|16:
3037e0
+			text = "MEMBARRIER_CMD_GLOBAL_EXPEDITED|"
3037e0
 			       "MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED|"
3037e0
 			       "MEMBARRIER_CMD_PRIVATE_EXPEDITED|"
3037e0
 			       "MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED";
3037e0
 			break;
3037e0
 
3037e0
-		case 1|2|4|8|16|32|64:
3037e0
-			text = "MEMBARRIER_CMD_GLOBAL|"
3037e0
-			       "MEMBARRIER_CMD_GLOBAL_EXPEDITED|"
3037e0
+		case 2|4|8|16|32|64:
3037e0
+			text = "MEMBARRIER_CMD_GLOBAL_EXPEDITED|"
3037e0
 			       "MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED|"
3037e0
 			       "MEMBARRIER_CMD_PRIVATE_EXPEDITED|"
3037e0
 			       "MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED|"
3037e0
@@ -83,8 +84,9 @@ main(void)
3037e0
 			error_msg_and_fail("membarrier returned %#x, does"
3037e0
 					   " the test have to be updated?", rc);
3037e0
 		}
3037e0
-		printf("membarrier(MEMBARRIER_CMD_QUERY, 0) = %#x (%s)\n",
3037e0
-		       rc, text);
3037e0
+		printf("membarrier(MEMBARRIER_CMD_QUERY, 0) = %#x (%s%s%s)\n",
3037e0
+		       rc, text_global, text[0] && text_global[0] ? "|" : "",
3037e0
+		       text);
3037e0
 	}
3037e0
 	puts("+++ exited with 0 +++");
3037e0
 	return 0;
3037e0
diff --git a/tests-m32/membarrier.c b/tests-m32/membarrier.c
3037e0
index f195063..9c76be5 100644
3037e0
--- a/tests-m32/membarrier.c
3037e0
+++ b/tests-m32/membarrier.c
3037e0
@@ -44,34 +44,35 @@ main(void)
3037e0
 	printf("membarrier(0x3 /* MEMBARRIER_CMD_??? */, 255) = -1 %s (%m)\n",
3037e0
 	       errno2name());
3037e0
 	if (errno != ENOSYS) {
3037e0
+		const char *text_global;
3037e0
 		const char *text;
3037e0
 		int rc = syscall(__NR_membarrier, 0, 0);
3037e0
 
3037e0
-		switch (rc) {
3037e0
-		case 1:
3037e0
-			text = "MEMBARRIER_CMD_GLOBAL";
3037e0
+		assert(rc >= 0);
3037e0
+
3037e0
+		text_global = rc & 1 ? "MEMBARRIER_CMD_GLOBAL" : "";
3037e0
+
3037e0
+		switch (rc & ~1) {
3037e0
+		case 0:
3037e0
+			text = "";
3037e0
 			break;
3037e0
-		case 1|8:
3037e0
-			text = "MEMBARRIER_CMD_GLOBAL|"
3037e0
-			       "MEMBARRIER_CMD_PRIVATE_EXPEDITED";
3037e0
+		case 8:
3037e0
+			text = "MEMBARRIER_CMD_PRIVATE_EXPEDITED";
3037e0
 			break;
3037e0
-		case 1|8|16:
3037e0
-			text = "MEMBARRIER_CMD_GLOBAL|"
3037e0
-			       "MEMBARRIER_CMD_PRIVATE_EXPEDITED|"
3037e0
+		case 8|16:
3037e0
+			text = "MEMBARRIER_CMD_PRIVATE_EXPEDITED|"
3037e0
 			       "MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED";
3037e0
 			break;
3037e0
 
3037e0
-		case 1|2|4|8|16:
3037e0
-			text = "MEMBARRIER_CMD_GLOBAL|"
3037e0
-			       "MEMBARRIER_CMD_GLOBAL_EXPEDITED|"
3037e0
+		case 2|4|8|16:
3037e0
+			text = "MEMBARRIER_CMD_GLOBAL_EXPEDITED|"
3037e0
 			       "MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED|"
3037e0
 			       "MEMBARRIER_CMD_PRIVATE_EXPEDITED|"
3037e0
 			       "MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED";
3037e0
 			break;
3037e0
 
3037e0
-		case 1|2|4|8|16|32|64:
3037e0
-			text = "MEMBARRIER_CMD_GLOBAL|"
3037e0
-			       "MEMBARRIER_CMD_GLOBAL_EXPEDITED|"
3037e0
+		case 2|4|8|16|32|64:
3037e0
+			text = "MEMBARRIER_CMD_GLOBAL_EXPEDITED|"
3037e0
 			       "MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED|"
3037e0
 			       "MEMBARRIER_CMD_PRIVATE_EXPEDITED|"
3037e0
 			       "MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED|"
3037e0
@@ -83,8 +84,9 @@ main(void)
3037e0
 			error_msg_and_fail("membarrier returned %#x, does"
3037e0
 					   " the test have to be updated?", rc);
3037e0
 		}
3037e0
-		printf("membarrier(MEMBARRIER_CMD_QUERY, 0) = %#x (%s)\n",
3037e0
-		       rc, text);
3037e0
+		printf("membarrier(MEMBARRIER_CMD_QUERY, 0) = %#x (%s%s%s)\n",
3037e0
+		       rc, text_global, text[0] && text_global[0] ? "|" : "",
3037e0
+		       text);
3037e0
 	}
3037e0
 	puts("+++ exited with 0 +++");
3037e0
 	return 0;
3037e0
diff --git a/tests-mx32/membarrier.c b/tests-mx32/membarrier.c
3037e0
index f195063..9c76be5 100644
3037e0
--- a/tests-mx32/membarrier.c
3037e0
+++ b/tests-mx32/membarrier.c
3037e0
@@ -44,34 +44,35 @@ main(void)
3037e0
 	printf("membarrier(0x3 /* MEMBARRIER_CMD_??? */, 255) = -1 %s (%m)\n",
3037e0
 	       errno2name());
3037e0
 	if (errno != ENOSYS) {
3037e0
+		const char *text_global;
3037e0
 		const char *text;
3037e0
 		int rc = syscall(__NR_membarrier, 0, 0);
3037e0
 
3037e0
-		switch (rc) {
3037e0
-		case 1:
3037e0
-			text = "MEMBARRIER_CMD_GLOBAL";
3037e0
+		assert(rc >= 0);
3037e0
+
3037e0
+		text_global = rc & 1 ? "MEMBARRIER_CMD_GLOBAL" : "";
3037e0
+
3037e0
+		switch (rc & ~1) {
3037e0
+		case 0:
3037e0
+			text = "";
3037e0
 			break;
3037e0
-		case 1|8:
3037e0
-			text = "MEMBARRIER_CMD_GLOBAL|"
3037e0
-			       "MEMBARRIER_CMD_PRIVATE_EXPEDITED";
3037e0
+		case 8:
3037e0
+			text = "MEMBARRIER_CMD_PRIVATE_EXPEDITED";
3037e0
 			break;
3037e0
-		case 1|8|16:
3037e0
-			text = "MEMBARRIER_CMD_GLOBAL|"
3037e0
-			       "MEMBARRIER_CMD_PRIVATE_EXPEDITED|"
3037e0
+		case 8|16:
3037e0
+			text = "MEMBARRIER_CMD_PRIVATE_EXPEDITED|"
3037e0
 			       "MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED";
3037e0
 			break;
3037e0
 
3037e0
-		case 1|2|4|8|16:
3037e0
-			text = "MEMBARRIER_CMD_GLOBAL|"
3037e0
-			       "MEMBARRIER_CMD_GLOBAL_EXPEDITED|"
3037e0
+		case 2|4|8|16:
3037e0
+			text = "MEMBARRIER_CMD_GLOBAL_EXPEDITED|"
3037e0
 			       "MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED|"
3037e0
 			       "MEMBARRIER_CMD_PRIVATE_EXPEDITED|"
3037e0
 			       "MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED";
3037e0
 			break;
3037e0
 
3037e0
-		case 1|2|4|8|16|32|64:
3037e0
-			text = "MEMBARRIER_CMD_GLOBAL|"
3037e0
-			       "MEMBARRIER_CMD_GLOBAL_EXPEDITED|"
3037e0
+		case 2|4|8|16|32|64:
3037e0
+			text = "MEMBARRIER_CMD_GLOBAL_EXPEDITED|"
3037e0
 			       "MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED|"
3037e0
 			       "MEMBARRIER_CMD_PRIVATE_EXPEDITED|"
3037e0
 			       "MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED|"
3037e0
@@ -83,8 +84,9 @@ main(void)
3037e0
 			error_msg_and_fail("membarrier returned %#x, does"
3037e0
 					   " the test have to be updated?", rc);
3037e0
 		}
3037e0
-		printf("membarrier(MEMBARRIER_CMD_QUERY, 0) = %#x (%s)\n",
3037e0
-		       rc, text);
3037e0
+		printf("membarrier(MEMBARRIER_CMD_QUERY, 0) = %#x (%s%s%s)\n",
3037e0
+		       rc, text_global, text[0] && text_global[0] ? "|" : "",
3037e0
+		       text);
3037e0
 	}
3037e0
 	puts("+++ exited with 0 +++");
3037e0
 	return 0;
3037e0
-- 
3037e0
2.1.4
3037e0