1 #include <linux/spinlock.h>
2 #include <linux/module.h>
4 #if !((LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,31)) && (defined(CONFIG_UML) || defined(CONFIG_X86))) && !((LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33)) && defined(CONFIG_ARM) && !defined(CONFIG_GENERIC_ATOMIC64))
6 static DEFINE_SPINLOCK(lock);
8 long long atomic64_read(const atomic64_t *v)
13 spin_lock_irqsave(&lock, flags);
15 spin_unlock_irqrestore(&lock, flags);
18 EXPORT_SYMBOL_GPL(atomic64_read);
20 long long atomic64_add_return(long long a, atomic64_t *v)
25 spin_lock_irqsave(&lock, flags);
26 val = v->counter += a;
27 spin_unlock_irqrestore(&lock, flags);
30 EXPORT_SYMBOL_GPL(atomic64_add_return);