From 9903c4e6973daa6579771ba67db415a7105d5e44 Mon Sep 17 00:00:00 2001 From: Trent Piepho Date: Sat, 30 May 2009 17:45:46 -0700 Subject: compat: handle __fls From: Trent Piepho __fls() was added for generic code in 2.6.29, existed for just 64-bit arches since 2.6.26 (v2.6.25-5228-g56a6b1e), and was x86-64 only before then. When __fls() doesn't exists we create an inline function that implements it via fls(), which has existed for longer. Priority: normal Signed-off-by: Trent Piepho --- v4l/compat.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'v4l/compat.h') diff --git a/v4l/compat.h b/v4l/compat.h index 6a40e2a33..ce28da615 100644 --- a/v4l/compat.h +++ b/v4l/compat.h @@ -454,4 +454,19 @@ static inline int snd_card_create(int idx, const char *id, #define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1)) #endif +/* __fls() was added for generic code in 2.6.29, existed for just 64-bit arches + * since 2.6.26 (v2.6.25-5228-g56a6b1e), and was x86-64 only before then. We + * only want this compat code when __fls doesn't exist, which 2.6.29 or later, + * non x86-64, and non 64-bit that's 2.6.26 or later. */ +#if !(LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29) || \ + defined(__x86_64__) || \ + (BITS_PER_LONG == 64 && LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 26))) +/* This define will prevent breakage if __fls was already defined. */ +#define __fls v4l_compat_fls +static inline unsigned long v4l_compat_fls(unsigned long x) +{ + return fls(x) - 1; +} +#endif + #endif /* _COMPAT_H */ -- cgit v1.2.3