|
|
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 |
|