summaryrefslogtreecommitdiff
path: root/tests/membarrier.c
diff options
context:
space:
mode:
authorEugene Syromyatnikov <evgsyr@gmail.com>2018-02-08 11:09:01 +0100
committerDmitry V. Levin <ldv@altlinux.org>2018-02-09 01:16:13 +0000
commitc2bacdd427e44b07160f45f821725441a8284af4 (patch)
tree4cd1de34095afb31625750ae9fd3d989c6ee3eab /tests/membarrier.c
parente87c073ecc05fa903b0ce88b9237d45dea96ca22 (diff)
downloadstrace-c2bacdd427e44b07160f45f821725441a8284af4.tar.gz
tests/membarrier.c: fix expected output on nohz_full systems
If nohz_full is enabled, MEMBARRIER_CMD_GLOBAL is not available. * tests/membarrier.c: check availability of MEMBARRIER_CMD_GLOBAL separately.
Diffstat (limited to 'tests/membarrier.c')
-rw-r--r--tests/membarrier.c36
1 files changed, 19 insertions, 17 deletions
diff --git a/tests/membarrier.c b/tests/membarrier.c
index f195063f1..9c76be5f6 100644
--- a/tests/membarrier.c
+++ b/tests/membarrier.c
@@ -44,34 +44,35 @@ main(void)
printf("membarrier(0x3 /* MEMBARRIER_CMD_??? */, 255) = %s\n",
sprintrc(-1));
if (saved_errno != ENOSYS) {
+ const char *text_global;
const char *text;
int rc = syscall(__NR_membarrier, 0, 0);
- switch (rc) {
- case 1:
- text = "MEMBARRIER_CMD_GLOBAL";
+ assert(rc >= 0);
+
+ text_global = rc & 1 ? "MEMBARRIER_CMD_GLOBAL" : "";
+
+ switch (rc & ~1) {
+ case 0:
+ text = "";
break;
- case 1|8:
- text = "MEMBARRIER_CMD_GLOBAL|"
- "MEMBARRIER_CMD_PRIVATE_EXPEDITED";
+ case 8:
+ text = "MEMBARRIER_CMD_PRIVATE_EXPEDITED";
break;
- case 1|8|16:
- text = "MEMBARRIER_CMD_GLOBAL|"
- "MEMBARRIER_CMD_PRIVATE_EXPEDITED|"
+ case 8|16:
+ text = "MEMBARRIER_CMD_PRIVATE_EXPEDITED|"
"MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED";
break;
- case 1|2|4|8|16:
- text = "MEMBARRIER_CMD_GLOBAL|"
- "MEMBARRIER_CMD_GLOBAL_EXPEDITED|"
+ case 2|4|8|16:
+ text = "MEMBARRIER_CMD_GLOBAL_EXPEDITED|"
"MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED|"
"MEMBARRIER_CMD_PRIVATE_EXPEDITED|"
"MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED";
break;
- case 1|2|4|8|16|32|64:
- text = "MEMBARRIER_CMD_GLOBAL|"
- "MEMBARRIER_CMD_GLOBAL_EXPEDITED|"
+ case 2|4|8|16|32|64:
+ text = "MEMBARRIER_CMD_GLOBAL_EXPEDITED|"
"MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED|"
"MEMBARRIER_CMD_PRIVATE_EXPEDITED|"
"MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED|"
@@ -83,8 +84,9 @@ main(void)
error_msg_and_fail("membarrier returned %#x, does"
" the test have to be updated?", rc);
}
- printf("membarrier(MEMBARRIER_CMD_QUERY, 0) = %#x (%s)\n",
- rc, text);
+ printf("membarrier(MEMBARRIER_CMD_QUERY, 0) = %#x (%s%s%s)\n",
+ rc, text_global, text[0] && text_global[0] ? "|" : "",
+ text);
}
puts("+++ exited with 0 +++");
return 0;