summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry V. Levin <ldv@strace.io>2021-03-27 08:00:00 +0000
committerDmitry V. Levin <ldv@strace.io>2021-03-27 08:00:00 +0000
commite6033ef77fddb3b59026e8fedd9543e209716a36 (patch)
treefe0f52e1e85aea2d3e4196e1b5583abd26161bcc
parent6c10374247bfe020e0450c02d809cdc4d8e955e8 (diff)
downloadstrace-e6033ef77fddb3b59026e8fedd9543e209716a36.tar.gz
xlat: update MPOL_* constants
* src/xlat/mpol_mode_flags.in (MPOL_F_NUMA_BALANCING): New constant introduced by Linux kernel commit v5.12-rc1~40^2~13. * src/numa.c (print_mode): Add MPOL_F_NUMA_BALANCING to the flags mask. * NEWS: Mention this change. * tests/mbind.c (mpol_modes): Check it. * tests/set_mempolicy.c (mpol_modes): Likewise.
-rw-r--r--NEWS2
-rw-r--r--src/numa.c5
-rw-r--r--src/xlat/mpol_mode_flags.in1
-rw-r--r--tests/mbind.c36
-rw-r--r--tests/set_mempolicy.c22
5 files changed, 41 insertions, 25 deletions
diff --git a/NEWS b/NEWS
index abb59c200..6cf9da746 100644
--- a/NEWS
+++ b/NEWS
@@ -3,7 +3,7 @@ Noteworthy changes in release ?.?? (????-??-??)
* Improvements
* Updated decoding of IFLA_BRPORT_* netlink attributes to match Linux 5.12.
- * Updated lists of DEVCONF_*, IORING_*, and KVM_* constants.
+ * Updated lists of DEVCONF_*, IORING_*, KVM_*, and MPOL_* constants.
* Bug fixes
* Fixed build using bionic libc.
diff --git a/src/numa.c b/src/numa.c
index ac7a873bf..81cb22ded 100644
--- a/src/numa.c
+++ b/src/numa.c
@@ -60,8 +60,9 @@ SYS_FUNC(migrate_pages)
static void
print_mode(struct tcb *const tcp, const kernel_ulong_t mode_arg)
{
- const kernel_ulong_t flags_mask =
- MPOL_F_STATIC_NODES | MPOL_F_RELATIVE_NODES;
+ const kernel_ulong_t flags_mask = MPOL_F_STATIC_NODES |
+ MPOL_F_RELATIVE_NODES |
+ MPOL_F_NUMA_BALANCING;
const kernel_ulong_t mode = mode_arg & ~flags_mask;
const unsigned int flags = mode_arg & flags_mask;
diff --git a/src/xlat/mpol_mode_flags.in b/src/xlat/mpol_mode_flags.in
index eeef95348..e647fb58e 100644
--- a/src/xlat/mpol_mode_flags.in
+++ b/src/xlat/mpol_mode_flags.in
@@ -1,2 +1,3 @@
MPOL_F_STATIC_NODES (1U << 15)
MPOL_F_RELATIVE_NODES (1U << 14)
+MPOL_F_NUMA_BALANCING (1U << 13)
diff --git a/tests/mbind.c b/tests/mbind.c
index 52210ba56..5d562c6cf 100644
--- a/tests/mbind.c
+++ b/tests/mbind.c
@@ -76,32 +76,40 @@ static struct {
{ ARG_STR(0x4001),
"0x4001 /* MPOL_PREFERRED|MPOL_F_RELATIVE_NODES */",
"MPOL_PREFERRED|MPOL_F_RELATIVE_NODES" },
- { ARG_STR(0xc002),
- "0xc002 /* MPOL_BIND|MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES */",
- "MPOL_BIND|MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES" },
+ { ARG_STR(0x2002),
+ "0x2002 /* MPOL_BIND|MPOL_F_NUMA_BALANCING */",
+ "MPOL_BIND|MPOL_F_NUMA_BALANCING" },
+ { ARG_STR(0xe003),
+ "0xe003 /* MPOL_INTERLEAVE|MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES"
+ "|MPOL_F_NUMA_BALANCING */",
+ "MPOL_INTERLEAVE|MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES"
+ "|MPOL_F_NUMA_BALANCING" },
{ ARG_STR(0x5),
"0x5 /* MPOL_??? */",
"0x5 /* MPOL_??? */" },
- { ARG_STR(0xffff3fff),
- "0xffff3fff /* MPOL_??? */",
- "0xffff3fff /* MPOL_??? */" },
+ { ARG_STR(0xffff1fff),
+ "0xffff1fff /* MPOL_??? */",
+ "0xffff1fff /* MPOL_??? */" },
{ ARG_STR(0xffffffff),
- "0xffffffff /* MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES|0xffff3fff */",
- "MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES|0xffff3fff" },
+ "0xffffffff /* MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES"
+ "|MPOL_F_NUMA_BALANCING|0xffff1fff */",
+ "MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES|MPOL_F_NUMA_BALANCING"
+ "|0xffff1fff" },
# if SIZEOF_LONG > 4
{ 0xffffffff00000000UL,
"0xffffffff00000000",
"0xffffffff00000000 /* MPOL_??? */",
"0xffffffff00000000 /* MPOL_??? */" },
- { 0xffffffffffff3fffUL,
- "0xffffffffffff3fff",
- "0xffffffffffff3fff /* MPOL_??? */",
- "0xffffffffffff3fff /* MPOL_??? */" },
+ { 0xffffffffffff1fffUL,
+ "0xffffffffffff1fff",
+ "0xffffffffffff1fff /* MPOL_??? */",
+ "0xffffffffffff1fff /* MPOL_??? */" },
{ -1UL,
"0xffffffffffffffff",
"0xffffffffffffffff /* MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES"
- "|0xffffffffffff3fff */",
- "MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES|0xffffffffffff3fff" },
+ "|MPOL_F_NUMA_BALANCING|0xffffffffffff1fff */",
+ "MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES|MPOL_F_NUMA_BALANCING"
+ "|0xffffffffffff1fff" },
# endif
};
diff --git a/tests/set_mempolicy.c b/tests/set_mempolicy.c
index 3d8c3ce83..88eee4bc4 100644
--- a/tests/set_mempolicy.c
+++ b/tests/set_mempolicy.c
@@ -74,18 +74,24 @@ static struct {
{ ARG_STR(0x4001),
"0x4001 /* MPOL_PREFERRED|MPOL_F_RELATIVE_NODES */",
"MPOL_PREFERRED|MPOL_F_RELATIVE_NODES" },
- { ARG_STR(0xc002),
- "0xc002 /* MPOL_BIND|MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES */",
- "MPOL_BIND|MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES" },
+ { ARG_STR(0x2002),
+ "0x2002 /* MPOL_BIND|MPOL_F_NUMA_BALANCING */",
+ "MPOL_BIND|MPOL_F_NUMA_BALANCING" },
+ { ARG_STR(0xe003),
+ "0xe003 /* MPOL_INTERLEAVE|MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES"
+ "|MPOL_F_NUMA_BALANCING */",
+ "MPOL_INTERLEAVE|MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES"
+ "|MPOL_F_NUMA_BALANCING" },
{ ARG_STR(0x5),
"0x5 /* MPOL_??? */",
"0x5 /* MPOL_??? */" },
- { ARG_STR(0xffff3fff),
- "0xffff3fff /* MPOL_??? */",
- "0xffff3fff /* MPOL_??? */" },
+ { ARG_STR(0xffff1fff),
+ "0xffff1fff /* MPOL_??? */",
+ "0xffff1fff /* MPOL_??? */" },
{ ARG_STR(0xffffffff),
- "0xffffffff /* MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES|0xffff3fff */",
- "MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES|0xffff3fff" }
+ "0xffffffff /* MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES"
+ "|MPOL_F_NUMA_BALANCING|0xffff1fff */",
+ "MPOL_F_STATIC_NODES|MPOL_F_RELATIVE_NODES|MPOL_F_NUMA_BALANCING|0xffff1fff" }
};
static void