summaryrefslogtreecommitdiff
path: root/kernel/external-module-compat-comm.h
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/external-module-compat-comm.h')
-rw-r--r--kernel/external-module-compat-comm.h770
1 files changed, 0 insertions, 770 deletions
diff --git a/kernel/external-module-compat-comm.h b/kernel/external-module-compat-comm.h
deleted file mode 100644
index e324f781..00000000
--- a/kernel/external-module-compat-comm.h
+++ /dev/null
@@ -1,770 +0,0 @@
-
-/*
- * Compatibility header for building as an external module.
- */
-
-/*
- * Avoid picking up the kernel's kvm.h in case we have a newer one.
- */
-
-#include <linux/compiler.h>
-#include <linux/version.h>
-#include <linux/string.h>
-#include <linux/kvm.h>
-#include <linux/kvm_para.h>
-#include <linux/cpu.h>
-#include <linux/time.h>
-#include <asm/processor.h>
-#include <linux/hrtimer.h>
-#include <asm/bitops.h>
-
-/* Override CONFIG_KVM_TRACE */
-#ifdef EXT_CONFIG_KVM_TRACE
-# define CONFIG_KVM_TRACE 1
-#else
-# undef CONFIG_KVM_TRACE
-#endif
-
-/*
- * 2.6.16 does not have GFP_NOWAIT
- */
-
-#include <linux/gfp.h>
-
-#ifndef GFP_NOWAIT
-#define GFP_NOWAIT (GFP_ATOMIC & ~__GFP_HIGH)
-#endif
-
-
-/*
- * kvm profiling support needs 2.6.20
- */
-#include <linux/profile.h>
-
-#ifndef KVM_PROFILING
-#define KVM_PROFILING 1234
-#define prof_on 4321
-#endif
-
-/*
- * smp_call_function_single() is not exported below 2.6.20, and has different
- * semantics below 2.6.23. The 'nonatomic' argument was removed in 2.6.27.
- */
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27)
-
-int kvm_smp_call_function_single(int cpu, void (*func)(void *info),
- void *info, int wait);
-
-#define smp_call_function_single kvm_smp_call_function_single
-
-#endif
-
-/* on_each_cpu() lost an argument in 2.6.27. */
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27)
-
-#define kvm_on_each_cpu(func, info, wait) on_each_cpu(func, info, 0, wait)
-
-#else
-
-#define kvm_on_each_cpu(func, info, wait) on_each_cpu(func, info, wait)
-
-#endif
-
-/*
- * The cpu hotplug stubs are broken if !CONFIG_CPU_HOTPLUG
- */
-
-#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,15)
-#define DEFINE_MUTEX(a) DECLARE_MUTEX(a)
-#define mutex_lock_interruptible(a) down_interruptible(a)
-#define mutex_unlock(a) up(a)
-#define mutex_lock(a) down(a)
-#define mutex_init(a) init_MUTEX(a)
-#define mutex_trylock(a) down_trylock(a)
-#define mutex semaphore
-#endif
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14)
-#ifndef kzalloc
-#define kzalloc(size,flags) \
-({ \
- void *__ret = kmalloc(size, flags); \
- if (__ret) \
- memset(__ret, 0, size); \
- __ret; \
-})
-#endif
-#endif
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17)
-#ifndef kmem_cache_zalloc
-#define kmem_cache_zalloc(cache,flags) \
-({ \
- void *__ret = kmem_cache_alloc(cache, flags); \
- if (__ret) \
- memset(__ret, 0, kmem_cache_size(cache)); \
- __ret; \
-})
-#endif
-#endif
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,21)
-
-#ifndef CONFIG_HOTPLUG_CPU
-#define register_cpu_notifier(nb) (0)
-#endif
-
-#endif
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,21)
-#define nr_cpu_ids NR_CPUS
-#endif
-
-#include <linux/miscdevice.h>
-#ifndef KVM_MINOR
-#define KVM_MINOR 232
-#endif
-
-#include <linux/notifier.h>
-#ifndef CPU_TASKS_FROZEN
-
-#define CPU_TASKS_FROZEN 0x0010
-#define CPU_ONLINE_FROZEN (CPU_ONLINE | CPU_TASKS_FROZEN)
-#define CPU_UP_PREPARE_FROZEN (CPU_UP_PREPARE | CPU_TASKS_FROZEN)
-#define CPU_UP_CANCELED_FROZEN (CPU_UP_CANCELED | CPU_TASKS_FROZEN)
-#define CPU_DOWN_PREPARE_FROZEN (CPU_DOWN_PREPARE | CPU_TASKS_FROZEN)
-#define CPU_DOWN_FAILED_FROZEN (CPU_DOWN_FAILED | CPU_TASKS_FROZEN)
-#define CPU_DEAD_FROZEN (CPU_DEAD | CPU_TASKS_FROZEN)
-
-#endif
-
-#ifndef CPU_DYING
-#define CPU_DYING 0x000A
-#define CPU_DYING_FROZEN (CPU_DYING | CPU_TASKS_FROZEN)
-#endif
-
-#include <asm/system.h>
-
-struct inode;
-#include <linux/anon_inodes.h>
-#define anon_inode_getfd kvm_anon_inode_getfd
-int kvm_init_anon_inodes(void);
-void kvm_exit_anon_inodes(void);
-int anon_inode_getfd(const char *name,
- const struct file_operations *fops,
- void *priv , int flags);
-
-/*
- * 2.6.23 removed the cache destructor
- */
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)
-# define kmem_cache_create(name, size, align, flags, ctor) \
- kmem_cache_create(name, size, align, flags, ctor, NULL)
-#endif
-
-/* HRTIMER_MODE_ABS started life with a different name */
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,21)
-#define HRTIMER_MODE_ABS HRTIMER_ABS
-#endif
-
-/* div64_u64 is fairly new */
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26)
-
-#define div64_u64 kvm_div64_u64
-
-#ifdef CONFIG_64BIT
-
-static inline uint64_t div64_u64(uint64_t dividend, uint64_t divisor)
-{
- return dividend / divisor;
-}
-
-#else
-
-uint64_t div64_u64(uint64_t dividend, uint64_t divisor);
-
-#endif
-
-#endif
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
-
-#ifdef RHEL_RELEASE_CODE
-#if RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(5,2)
-#define RHEL_BOOL 1
-#endif
-#endif
-
-#ifndef RHEL_BOOL
-
-typedef _Bool bool;
-
-#endif
-
-#endif
-
-/*
- * PF_VCPU is a Linux 2.6.24 addition
- */
-
-#include <linux/sched.h>
-
-#ifndef PF_VCPU
-#define PF_VCPU 0
-#endif
-
-/*
- * smp_call_function_mask() is not defined/exported below 2.6.24 on all
- * targets and below 2.6.26 on x86-64
- */
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24) || \
- (defined CONFIG_X86_64 && LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26))
-
-int kvm_smp_call_function_mask(cpumask_t mask, void (*func) (void *info),
- void *info, int wait);
-
-#define smp_call_function_mask kvm_smp_call_function_mask
-
-#if (!defined(RHEL_RELEASE_CODE) || \
- RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(5,4) || \
- !defined(CONFIG_X86_64))
-
-void kvm_smp_send_reschedule(int cpu);
-
-#else
-
-#define kvm_smp_send_reschedule smp_send_reschedule
-
-#endif
-#endif
-
-/* empty_zero_page isn't exported in all kernels */
-#include <asm/pgtable.h>
-
-#define empty_zero_page kvm_empty_zero_page
-
-static char empty_zero_page[PAGE_SIZE];
-
-static inline void blahblah(void)
-{
- (void)empty_zero_page[0];
-}
-
-/* __mmdrop() is not exported before 2.6.25 */
-#include <linux/sched.h>
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25)
-
-#define mmdrop(x) do { (void)(x); } while (0)
-#define mmget(x) do { (void)(x); } while (0)
-
-#else
-
-#define mmget(x) do { atomic_inc(x); } while (0)
-
-#endif
-
-/* pagefault_enable(), page_fault_disable() - 2.6.20 */
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)
-#if RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(5,2)
-
-static inline void pagefault_disable(void)
-{
- inc_preempt_count();
- /*
- * make sure to have issued the store before a pagefault
- * can hit.
- */
- barrier();
-}
-
-static inline void pagefault_enable(void)
-{
- /*
- * make sure to issue those last loads/stores before enabling
- * the pagefault handler again.
- */
- barrier();
- dec_preempt_count();
- /*
- * make sure we do..
- */
- barrier();
- preempt_check_resched();
-}
-
-#else
-#include <linux/uaccess.h>
-#endif
-#endif
-
-/* vm ops ->fault() was introduced in 2.6.23. */
-#include <linux/mm.h>
-
-#ifdef KVM_MAIN
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)
-
-struct vm_fault {
- unsigned int flags;
- pgoff_t pgoff;
- void __user *virtual_address;
- struct page *page;
-};
-
-static int kvm_vcpu_fault(struct vm_area_struct *vma, struct vm_fault *vmf);
-static int kvm_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf);
-
-static inline struct page *kvm_nopage_to_fault(
- int (*fault)(struct vm_area_struct *vma, struct vm_fault *vmf),
- struct vm_area_struct *vma,
- unsigned long address,
- int *type)
-{
- struct vm_fault vmf;
- int ret;
-
- vmf.pgoff = ((address - vma->vm_start) >> PAGE_SHIFT) + vma->vm_pgoff;
- vmf.virtual_address = (void __user *)address;
- ret = fault(vma, &vmf);
- if (ret)
- return NOPAGE_SIGBUS;
- *type = VM_FAULT_MINOR;
- return vmf.page;
-}
-
-static inline struct page *__kvm_vcpu_fault(struct vm_area_struct *vma,
- unsigned long address,
- int *type)
-{
- return kvm_nopage_to_fault(kvm_vcpu_fault, vma, address, type);
-}
-
-static inline struct page *__kvm_vm_fault(struct vm_area_struct *vma,
- unsigned long address,
- int *type)
-{
- return kvm_nopage_to_fault(kvm_vm_fault, vma, address, type);
-}
-
-#define VMA_OPS_FAULT(x) nopage
-#define VMA_OPS_FAULT_FUNC(x) __##x
-
-#else
-
-#define VMA_OPS_FAULT(x) x
-#define VMA_OPS_FAULT_FUNC(x) x
-
-#endif
-#endif
-
-/* simple vfs attribute getter signature has changed to add a return code */
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,25)
-
-#define MAKE_SIMPLE_ATTRIBUTE_GETTER(x) \
- static u64 x(void *v) \
- { \
- u64 ret = 0; \
- \
- __##x(v, &ret); \
- return ret; \
- }
-
-#else
-
-#define MAKE_SIMPLE_ATTRIBUTE_GETTER(x) \
- static int x(void *v, u64 *val) \
- { \
- return __##x(v, val); \
- }
-
-#endif
-
-/* set_kset_name() is gone in 2.6.25 */
-
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25)
-
-#define set_kset_name(x) .name = x
-
-#endif
-
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25)
-#ifndef FASTCALL
-#define FASTCALL(x) x
-#define fastcall
-#endif
-#endif
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)
-extern unsigned int tsc_khz;
-#endif
-
-#define kvm_tsc_khz tsc_khz
-
-#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,21)
-
-#include <linux/ktime.h>
-#include <linux/hrtimer.h>
-
-#define ktime_get kvm_ktime_get
-
-static inline ktime_t ktime_get(void)
-{
- struct timespec now;
-
- ktime_get_ts(&now);
-
- return timespec_to_ktime(now);
-}
-
-#endif
-
-/* __aligned arrived in 2.6.21 */
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,21)
-#if !defined(RHEL_RELEASE_CODE) || (RHEL_RELEASE_CODE <= RHEL_RELEASE_VERSION(5,2) && !defined(__aligned))
-#define __aligned(x) __attribute__((__aligned__(x)))
-#endif
-#endif
-
-#include <linux/mm.h>
-
-/* The shrinker API changed in 2.6.23 */
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)
-
-struct kvm_shrinker {
- int (*shrink)(int nr_to_scan, gfp_t gfp_mask);
- int seeks;
- struct shrinker *kshrinker;
-};
-
-static inline void register_shrinker(struct kvm_shrinker *shrinker)
-{
- shrinker->kshrinker = set_shrinker(shrinker->seeks, shrinker->shrink);
-}
-
-static inline void unregister_shrinker(struct kvm_shrinker *shrinker)
-{
- if (shrinker->kshrinker)
- remove_shrinker(shrinker->kshrinker);
-}
-
-#define shrinker kvm_shrinker
-
-#endif
-
-/* clocksource */
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)
-static inline u32 clocksource_khz2mult(u32 khz, u32 shift_constant)
-{
- /* khz = cyc/(Million ns)
- * mult/2^shift = ns/cyc
- * mult = ns/cyc * 2^shift
- * mult = 1Million/khz * 2^shift
- * mult = 1000000 * 2^shift / khz
- * mult = (1000000<<shift) / khz
- */
- u64 tmp = ((u64)1000000) << shift_constant;
-
- tmp += khz/2; /* round for do_div */
- do_div(tmp, khz);
-
- return (u32)tmp;
-}
-#else
-#include <linux/clocksource.h>
-#endif
-
-/* manually export hrtimer_init/start/cancel */
-#include <linux/kallsyms.h>
-extern void (*hrtimer_init_p)(struct hrtimer *timer, clockid_t which_clock,
- enum hrtimer_mode mode);
-extern int (*hrtimer_start_p)(struct hrtimer *timer, ktime_t tim,
- const enum hrtimer_mode mode);
-extern int (*hrtimer_cancel_p)(struct hrtimer *timer);
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17) && defined(CONFIG_KALLSYMS)
-static inline void hrtimer_kallsyms_resolve(void)
-{
- hrtimer_init_p = (void *) kallsyms_lookup_name("hrtimer_init");
- BUG_ON(!hrtimer_init_p);
- hrtimer_start_p = (void *) kallsyms_lookup_name("hrtimer_start");
- BUG_ON(!hrtimer_start_p);
- hrtimer_cancel_p = (void *) kallsyms_lookup_name("hrtimer_cancel");
- BUG_ON(!hrtimer_cancel_p);
-}
-#else
-static inline void hrtimer_kallsyms_resolve(void)
-{
- hrtimer_init_p = hrtimer_init;
- hrtimer_start_p = hrtimer_start;
- hrtimer_cancel_p = hrtimer_cancel;
-}
-#endif
-
-/* handle old hrtimer API with data pointer */
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17)
-static inline void hrtimer_data_pointer(struct hrtimer *timer)
-{
- timer->data = (void *)timer;
-}
-#else
-static inline void hrtimer_data_pointer(struct hrtimer *timer) {}
-#endif
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22)
-
-#define ns_to_timespec kvm_ns_to_timespec
-
-struct timespec kvm_ns_to_timespec(const s64 nsec);
-
-#endif
-
-/* work_struct lost the 'data' field in 2.6.20 */
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)
-
-#define kvm_INIT_WORK(work, handler) \
- INIT_WORK(work, (void (*)(void *))handler, work)
-
-#else
-
-#define kvm_INIT_WORK(work, handler) INIT_WORK(work, handler)
-
-#endif
-
-/* cancel_work_sync() was flush_work() in 2.6.21 */
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22)
-
-static inline int cancel_work_sync(struct work_struct *work)
-{
- /*
- * FIXME: actually cancel. How? Add own implementation of workqueues?
- */
- return 0;
-}
-
-/* ... and it returned void before 2.6.23 */
-#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23)
-
-#define cancel_work_sync(work) ({ cancel_work_sync(work); 0; })
-
-#endif
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20)
-
-struct pci_dev;
-
-struct pci_dev *pci_get_bus_and_slot(unsigned int bus, unsigned int devfn);
-
-#endif
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,21)
-
-#include <linux/relay.h>
-
-/* relay_open() interface has changed on 2.6.21 */
-
-struct rchan *kvm_relay_open(const char *base_filename,
- struct dentry *parent,
- size_t subbuf_size,
- size_t n_subbufs,
- struct rchan_callbacks *cb,
- void *private_data);
-
-#else
-
-#define kvm_relay_open relay_open
-
-#endif
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27)
-
-static inline int kvm_get_user_pages_fast(unsigned long start, int nr_pages,
- int write, struct page **pages)
-{
- int npages;
-
- down_read(&current->mm->mmap_sem);
- npages = get_user_pages(current, current->mm, start, nr_pages, write,
- 0, pages, NULL);
- up_read(&current->mm->mmap_sem);
-
- return npages;
-}
-#else
-
-#define kvm_get_user_pages_fast get_user_pages_fast
-
-#endif
-
-/* spin_needbreak() was called something else in 2.6.24 */
-#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,24)
-
-#define spin_needbreak need_lockbreak
-
-#endif
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28)
-
-static inline void kvm_hrtimer_add_expires_ns(struct hrtimer *timer, u64 delta)
-{
- timer->expires = ktime_add_ns(timer->expires, delta);
-}
-
-static inline ktime_t kvm_hrtimer_get_expires(struct hrtimer *timer)
-{
- return timer->expires;
-}
-
-static inline u64 kvm_hrtimer_get_expires_ns(struct hrtimer *timer)
-{
- return ktime_to_ns(timer->expires);
-}
-
-static inline void kvm_hrtimer_start_expires(struct hrtimer *timer, int mode)
-{
- hrtimer_start_p(timer, timer->expires, mode);
-}
-
-static inline ktime_t kvm_hrtimer_expires_remaining(const struct hrtimer *timer)
-{
- return ktime_sub(timer->expires, timer->base->get_time());
-}
-
-#else
-
-#define kvm_hrtimer_add_expires_ns hrtimer_add_expires_ns
-#define kvm_hrtimer_get_expires hrtimer_get_expires
-#define kvm_hrtimer_get_expires_ns hrtimer_get_expires_ns
-#define kvm_hrtimer_start_expires hrtimer_start_expires
-#define kvm_hrtimer_expires_remaining hrtimer_expires_remaining
-
-#endif
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28)
-#if !defined(RHEL_RELEASE_CODE) || RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(5,4)
-
-static inline int pci_reset_function(struct pci_dev *dev)
-{
- return 0;
-}
-
-#endif
-#endif
-
-#ifndef KMEM_CACHE
-/*
- * Please use this macro to create slab caches. Simply specify the
- * name of the structure and maybe some flags that are listed above.
- *
- * The alignment of the struct determines object alignment. If you
- * f.e. add ____cacheline_aligned_in_smp to the struct declaration
- * then the objects will be properly aligned in SMP configurations.
- */
-#define KMEM_CACHE(__struct, __flags) kmem_cache_create(#__struct,\
- sizeof(struct __struct), __alignof__(struct __struct),\
- (__flags), NULL)
-#endif
-
-#include <linux/interrupt.h>
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
-
-typedef irqreturn_t (*kvm_irq_handler_t)(int, void *);
-int kvm_request_irq(unsigned int a, kvm_irq_handler_t handler, unsigned long c,
- const char *d, void *e);
-void kvm_free_irq(unsigned int irq, void *dev_id);
-
-#else
-
-#define kvm_request_irq request_irq
-#define kvm_free_irq free_irq
-
-#endif
-
-/* dynamically allocated cpu masks introduced in 2.6.28 */
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28)
-
-typedef cpumask_t cpumask_var_t[1];
-
-static inline bool alloc_cpumask_var(cpumask_var_t *mask, gfp_t flags)
-{
- return 1;
-}
-
-static inline void free_cpumask_var(cpumask_var_t mask)
-{
-}
-
-static inline void cpumask_clear(cpumask_var_t mask)
-{
- cpus_clear(*mask);
-}
-
-static inline void cpumask_set_cpu(int cpu, cpumask_var_t mask)
-{
- cpu_set(cpu, *mask);
-}
-
-static inline int smp_call_function_many(cpumask_var_t cpus,
- void (*func)(void *data), void *data,
- int sync)
-{
- return smp_call_function_mask(*cpus, func, data, sync);
-}
-
-static inline int cpumask_empty(cpumask_var_t mask)
-{
- return cpus_empty(*mask);
-}
-
-static inline int cpumask_test_cpu(int cpu, cpumask_var_t mask)
-{
- return cpu_isset(cpu, *mask);
-}
-
-static inline void cpumask_clear_cpu(int cpu, cpumask_var_t mask)
-{
- cpu_clear(cpu, *mask);
-}
-
-#define cpu_online_mask (&cpu_online_map)
-
-#endif
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29)
-
-#define IF_ANON_INODES_DOES_REFCOUNTS(x)
-
-#else
-
-#define IF_ANON_INODES_DOES_REFCOUNTS(x) x
-
-#endif
-
-
-/* Macro introduced only on newer kernels: */
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,28)
-#define marker_synchronize_unregister() synchronize_sched()
-#endif
-
-/* compound_head() was introduced in 2.6.22 */
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22)
-# define NEED_COMPOUND_HEAD 1
-# ifdef RHEL_RELEASE_CODE
-# if RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(5,2)
-# undef NEED_COMPOUND_HEAD
-# endif
-# endif
-#endif
-
-#ifdef NEED_COMPOUND_HEAD
-
-static inline struct page *compound_head(struct page *page)
-{
- if (PageCompound(page))
- page = (struct page *)page_private(page);
- return page;
-}
-
-#endif