1 /** 2 * @file compat.h 3 * This file is intended to be up-to-date with the last linux version and 4 * provide work-arounds for missing features in previous kernel version 5 * 6 * @remark Copyright 2002 OProfile authors 7 * @remark Read the file COPYING 8 * 9 * @author John Levon 10 * @author Philippe Elie 11 */ 12 13 14 #ifndef COMPAT_H 15 #define COMPAT_H 16 17 #include <linux/version.h> 18 #include <linux/module.h> 19 #ifdef HAVE_LINUX_SPINLOCK_HEADER 20 /* FIXME do we need this still ? */ 21 #include <linux/spinlock.h> 22 #endif 23 24 #define V_BEFORE(a, b, c) (LINUX_VERSION_CODE < KERNEL_VERSION(a, b, c)) 25 #define V_AT_LEAST(a, b, c) (LINUX_VERSION_CODE >= KERNEL_VERSION(a, b, c)) 26 27 #if V_BEFORE(2, 4, 0) 28 #include "compat22.h" 29 #else 30 #include "compat24.h" 31 #endif 32 33 #include "op_cache.h" 34 35 /* Things that cannot rely on a particular linux version or are needed between 36 * major release */ 37 38 #ifndef BUG_ON 39 #define BUG_ON(p) do { if (p) BUG(); } while (0) 40 #endif 41 42 #ifndef MODULE_LICENSE 43 #define MODULE_LICENSE(x) 44 #endif 45 46 /* Compiler work-around */ 47 48 /* branch prediction */ 49 #ifndef likely 50 #ifdef EXPECT_OK 51 #define likely(a) __builtin_expect((a), 1) 52 #else 53 #define likely(a) (a) 54 #endif 55 #endif 56 #ifndef unlikely 57 #ifdef EXPECT_OK 58 #define unlikely(a) __builtin_expect((a), 0) 59 #else 60 #define unlikely(a) (a) 61 #endif 62 #endif 63 64 #ifndef CONFIG_X86_64 65 #define VMALLOC_32(sz) vmalloc_32(sz) 66 #else /* CONFIG_X86_64 */ 67 #define VMALLOC_32(sz) vmalloc(sz) 68 #endif /* CONFIG_X86_64 */ 69 70 #endif /* COMPAT_H */ 71