commit 52231be034160c786735c6ae2f51ac7723c2e1fd Author: Dmitry V. Levin Date: Fri Sep 15 16:06:14 2017 +0000 Update MEMBARRIER_CMD_* constants * xlat/membarrier_cmds.in: Add MEMBARRIER_CMD_PRIVATE_EXPEDITED introduced by kernel commit v4.14-rc1~174^2^2^4. * NEWS: Mention this. * tests/membarrier.c (main): Update expected output. [ ES: also patch files in tests-m32 and tests-mx32 directories ] diff -rup a/tests/membarrier.c b/tests/membarrier.c --- a/tests/membarrier.c 2016-04-21 14:16:50.000000000 -0400 +++ b/tests/membarrier.c 2018-02-05 19:24:07.016341127 -0500 @@ -42,10 +42,23 @@ main(void) printf("membarrier(0x3 /* MEMBARRIER_CMD_??? */, 255) = -1 %s (%m)\n", errno2name()); if (errno != ENOSYS) { - /* the test needs to be updated? */ - assert(syscall(__NR_membarrier, 0, 0) == 1); - puts("membarrier(MEMBARRIER_CMD_QUERY, 0)" - " = 0x1 (MEMBARRIER_CMD_SHARED)"); + const char *text; + int rc = syscall(__NR_membarrier, 0, 0); + + switch (rc) { + case 1: + text = "MEMBARRIER_CMD_SHARED"; + break; + case 1|8: + text = "MEMBARRIER_CMD_SHARED|" + "MEMBARRIER_CMD_PRIVATE_EXPEDITED"; + break; + default: + 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); } puts("+++ exited with 0 +++"); return 0; diff -rup a/tests-m32/membarrier.c b/tests-m32/membarrier.c --- a/tests-m32/membarrier.c 2016-04-21 14:16:50.000000000 -0400 +++ b/tests-m32/membarrier.c 2018-02-05 19:24:07.016341127 -0500 @@ -42,10 +42,23 @@ main(void) printf("membarrier(0x3 /* MEMBARRIER_CMD_??? */, 255) = -1 %s (%m)\n", errno2name()); if (errno != ENOSYS) { - /* the test needs to be updated? */ - assert(syscall(__NR_membarrier, 0, 0) == 1); - puts("membarrier(MEMBARRIER_CMD_QUERY, 0)" - " = 0x1 (MEMBARRIER_CMD_SHARED)"); + const char *text; + int rc = syscall(__NR_membarrier, 0, 0); + + switch (rc) { + case 1: + text = "MEMBARRIER_CMD_SHARED"; + break; + case 1|8: + text = "MEMBARRIER_CMD_SHARED|" + "MEMBARRIER_CMD_PRIVATE_EXPEDITED"; + break; + default: + 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); } puts("+++ exited with 0 +++"); return 0; diff -rup a/tests-mx32/membarrier.c b/tests-mx32/membarrier.c --- a/tests-mx32/membarrier.c 2016-04-21 14:16:50.000000000 -0400 +++ b/tests-mx32/membarrier.c 2018-02-05 19:24:07.016341127 -0500 @@ -42,10 +42,23 @@ main(void) printf("membarrier(0x3 /* MEMBARRIER_CMD_??? */, 255) = -1 %s (%m)\n", errno2name()); if (errno != ENOSYS) { - /* the test needs to be updated? */ - assert(syscall(__NR_membarrier, 0, 0) == 1); - puts("membarrier(MEMBARRIER_CMD_QUERY, 0)" - " = 0x1 (MEMBARRIER_CMD_SHARED)"); + const char *text; + int rc = syscall(__NR_membarrier, 0, 0); + + switch (rc) { + case 1: + text = "MEMBARRIER_CMD_SHARED"; + break; + case 1|8: + text = "MEMBARRIER_CMD_SHARED|" + "MEMBARRIER_CMD_PRIVATE_EXPEDITED"; + break; + default: + 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); } puts("+++ exited with 0 +++"); return 0; diff -rup a/xlat/membarrier_cmds.in b/xlat/membarrier_cmds.in --- a/xlat/membarrier_cmds.in 2015-11-16 19:40:22.000000000 -0500 +++ b/xlat/membarrier_cmds.in 2018-02-05 19:23:39.097820501 -0500 @@ -1,2 +1,3 @@ -MEMBARRIER_CMD_QUERY 0 -MEMBARRIER_CMD_SHARED 1 +MEMBARRIER_CMD_QUERY 0 +MEMBARRIER_CMD_SHARED 1 +MEMBARRIER_CMD_PRIVATE_EXPEDITED 8