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.
This commit is contained in:
parent
e87c073ecc
commit
c2bacdd427
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user