| From: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> |
| Subject: tools/testing: add linux/args.h header and fix radix, VMA tests |
| Date: Mon, 11 Aug 2025 06:26:54 +0100 |
| |
| Commit 857d18f23ab1 ("cleanup: Introduce ACQUIRE() and ACQUIRE_ERR() for |
| conditional locks") accidentally broke the radix tree, VMA userland tests |
| by including linux/args.h which is not present in the tools/include |
| directory. |
| |
| This patch copies this over and adds an #ifdef block to avoid duplicate |
| __CONCAT declaration in conflict with system headers when we ultimately |
| include this. |
| |
| Link: https://lkml.kernel.org/r/20250811052654.33286-1-lorenzo.stoakes@oracle.com |
| Fixes: 857d18f23ab1 ("cleanup: Introduce ACQUIRE() and ACQUIRE_ERR() for conditional locks") |
| Signed-off-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> |
| Cc: Jann Horn <jannh@google.com> |
| Cc: John Hubbard <jhubbard@nvidia.com> |
| Cc: Liam Howlett <liam.howlett@oracle.com> |
| Cc: Sidhartha Kumar <sidhartha.kumar@oracle.com> |
| Cc: Vlastimil Babka <vbabka@suse.cz> |
| Cc: Dan Williams <dan.j.williams@intel.com> |
| Cc: Peter Zijlstra <peterz@infradead.org> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| tools/include/linux/args.h | 28 ++++++++++++++++++++++++++++ |
| tools/testing/shared/linux/idr.h | 4 ++++ |
| 2 files changed, 32 insertions(+) |
| |
| diff --git a/tools/include/linux/args.h a/tools/include/linux/args.h |
| new file mode 100644 |
| --- /dev/null |
| +++ a/tools/include/linux/args.h |
| @@ -0,0 +1,28 @@ |
| +/* SPDX-License-Identifier: GPL-2.0 */ |
| + |
| +#ifndef _LINUX_ARGS_H |
| +#define _LINUX_ARGS_H |
| + |
| +/* |
| + * How do these macros work? |
| + * |
| + * In __COUNT_ARGS() _0 to _12 are just placeholders from the start |
| + * in order to make sure _n is positioned over the correct number |
| + * from 12 to 0 (depending on X, which is a variadic argument list). |
| + * They serve no purpose other than occupying a position. Since each |
| + * macro parameter must have a distinct identifier, those identifiers |
| + * are as good as any. |
| + * |
| + * In COUNT_ARGS() we use actual integers, so __COUNT_ARGS() returns |
| + * that as _n. |
| + */ |
| + |
| +/* This counts to 15. Any more, it will return 16th argument. */ |
| +#define __COUNT_ARGS(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _n, X...) _n |
| +#define COUNT_ARGS(X...) __COUNT_ARGS(, ##X, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) |
| + |
| +/* Concatenate two parameters, but allow them to be expanded beforehand. */ |
| +#define __CONCAT(a, b) a ## b |
| +#define CONCATENATE(a, b) __CONCAT(a, b) |
| + |
| +#endif /* _LINUX_ARGS_H */ |
| --- a/tools/testing/shared/linux/idr.h~tools-testing-add-linux-argsh-header-and-fix-radix-vma-tests |
| +++ a/tools/testing/shared/linux/idr.h |
| @@ -1 +1,5 @@ |
| +/* Avoid duplicate definitions due to system headers. */ |
| +#ifdef __CONCAT |
| +#undef __CONCAT |
| +#endif |
| #include "../../../../include/linux/idr.h" |
| _ |