Messages in this thread Patch in this message | | | Date | Tue, 30 Nov 2021 16:39:00 +0200 | From | Andy Shevchenko <> | Subject | Re: [PATCH] tools: Fix math.h breakage |
| |
On Tue, Nov 30, 2021 at 02:13:16PM +0000, Matthew Wilcox (Oracle) wrote: > Commit 98e1385ef24b broke the radix tree test suite in two different ways; > first by including math.h which didn't exist in the tools directory, and > second by removing an implicit include of spinlock.h before lockdep.h. > Fix both issues.
Sorry for that and thank you for the fix. Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
I'm wondering if there is a way of not copying kernel headers manually, otherwise we always will have such breakages.
> Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> > --- > tools/include/linux/kernel.h | 22 +-------------------- > tools/include/linux/math.h | 25 ++++++++++++++++++++++++ > tools/testing/radix-tree/linux/lockdep.h | 3 +++ > 3 files changed, 29 insertions(+), 21 deletions(-) > create mode 100644 tools/include/linux/math.h > > diff --git a/tools/include/linux/kernel.h b/tools/include/linux/kernel.h > index a7e54a08fb54..3e8df500cfbd 100644 > --- a/tools/include/linux/kernel.h > +++ b/tools/include/linux/kernel.h > @@ -7,6 +7,7 @@ > #include <assert.h> > #include <linux/build_bug.h> > #include <linux/compiler.h> > +#include <linux/math.h> > #include <endian.h> > #include <byteswap.h> > > @@ -14,8 +15,6 @@ > #define UINT_MAX (~0U) > #endif > > -#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d)) > - > #define PERF_ALIGN(x, a) __PERF_ALIGN_MASK(x, (typeof(x))(a)-1) > #define __PERF_ALIGN_MASK(x, mask) (((x)+(mask))&~(mask)) > > @@ -52,15 +51,6 @@ > _min1 < _min2 ? _min1 : _min2; }) > #endif > > -#ifndef roundup > -#define roundup(x, y) ( \ > -{ \ > - const typeof(y) __y = y; \ > - (((x) + (__y - 1)) / __y) * __y; \ > -} \ > -) > -#endif > - > #ifndef BUG_ON > #ifdef NDEBUG > #define BUG_ON(cond) do { if (cond) {} } while (0) > @@ -104,16 +94,6 @@ int scnprintf_pad(char * buf, size_t size, const char * fmt, ...); > > #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) > > -/* > - * This looks more complex than it should be. But we need to > - * get the type for the ~ right in round_down (it needs to be > - * as wide as the result!), and we want to evaluate the macro > - * arguments just once each. > - */ > -#define __round_mask(x, y) ((__typeof__(x))((y)-1)) > -#define round_up(x, y) ((((x)-1) | __round_mask(x, y))+1) > -#define round_down(x, y) ((x) & ~__round_mask(x, y)) > - > #define current_gfp_context(k) 0 > #define synchronize_rcu() > > diff --git a/tools/include/linux/math.h b/tools/include/linux/math.h > new file mode 100644 > index 000000000000..4e7af99ec9eb > --- /dev/null > +++ b/tools/include/linux/math.h > @@ -0,0 +1,25 @@ > +#ifndef _TOOLS_MATH_H > +#define _TOOLS_MATH_H > + > +/* > + * This looks more complex than it should be. But we need to > + * get the type for the ~ right in round_down (it needs to be > + * as wide as the result!), and we want to evaluate the macro > + * arguments just once each. > + */ > +#define __round_mask(x, y) ((__typeof__(x))((y)-1)) > +#define round_up(x, y) ((((x)-1) | __round_mask(x, y))+1) > +#define round_down(x, y) ((x) & ~__round_mask(x, y)) > + > +#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d)) > + > +#ifndef roundup > +#define roundup(x, y) ( \ > +{ \ > + const typeof(y) __y = y; \ > + (((x) + (__y - 1)) / __y) * __y; \ > +} \ > +) > +#endif > + > +#endif > diff --git a/tools/testing/radix-tree/linux/lockdep.h b/tools/testing/radix-tree/linux/lockdep.h > index 565fccdfe6e9..016cff473cfc 100644 > --- a/tools/testing/radix-tree/linux/lockdep.h > +++ b/tools/testing/radix-tree/linux/lockdep.h > @@ -1,5 +1,8 @@ > #ifndef _LINUX_LOCKDEP_H > #define _LINUX_LOCKDEP_H > + > +#include <linux/spinlock.h> > + > struct lock_class_key { > unsigned int a; > }; > -- > 2.33.0 >
-- With Best Regards, Andy Shevchenko
| |