/** * @file compat.h * This file is intended to be up-to-date with the last linux version and * provide work-arounds for missing features in previous kernel version * * @remark Copyright 2002 OProfile authors * @remark Read the file COPYING * * @author John Levon * @author Philippe Elie */ #ifndef COMPAT_H #define COMPAT_H #include <linux/version.h> #include <linux/module.h> #ifdef HAVE_LINUX_SPINLOCK_HEADER /* FIXME do we need this still ? */ #include <linux/spinlock.h> #endif #define V_BEFORE(a, b, c) (LINUX_VERSION_CODE < KERNEL_VERSION(a, b, c)) #define V_AT_LEAST(a, b, c) (LINUX_VERSION_CODE >= KERNEL_VERSION(a, b, c)) #if V_BEFORE(2, 4, 0) #include "compat22.h" #else #include "compat24.h" #endif #include "op_cache.h" /* Things that cannot rely on a particular linux version or are needed between * major release */ #ifndef BUG_ON #define BUG_ON(p) do { if (p) BUG(); } while (0) #endif #ifndef MODULE_LICENSE #define MODULE_LICENSE(x) #endif /* Compiler work-around */ /* branch prediction */ #ifndef likely #ifdef EXPECT_OK #define likely(a) __builtin_expect((a), 1) #else #define likely(a) (a) #endif #endif #ifndef unlikely #ifdef EXPECT_OK #define unlikely(a) __builtin_expect((a), 0) #else #define unlikely(a) (a) #endif #endif #ifndef CONFIG_X86_64 #define VMALLOC_32(sz) vmalloc_32(sz) #else /* CONFIG_X86_64 */ #define VMALLOC_32(sz) vmalloc(sz) #endif /* CONFIG_X86_64 */ #endif /* COMPAT_H */