1
/*********************************************************
2
* Copyright (C) 2005 VMware, Inc. All rights reserved.
4
* This program is free software; you can redistribute it and/or modify it
5
* under the terms of the GNU General Public License as published by the
6
* Free Software Foundation version 2 and no later version.
8
* This program is distributed in the hope that it will be useful, but
9
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
10
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13
* You should have received a copy of the GNU General Public License along
14
* with this program; if not, write to the Free Software Foundation, Inc.,
15
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17
*********************************************************/
19
#ifndef __COMPAT_SPINLOCK_H__
20
# define __COMPAT_SPINLOCK_H__
24
* The spin_lock() API appeared in 2.1.25 in asm/smp_lock.h
25
* It moved in 2.1.30 to asm/spinlock.h
26
* It moved again in 2.3.18 to linux/spinlock.h
30
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 3, 18)
31
# include <linux/spinlock.h>
33
# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 1, 30)
34
# include <asm/spinlock.h>
36
typedef struct {} spinlock_t;
37
# define spin_lock_init(lock)
38
# define spin_lock(lock)
39
# define spin_unlock(lock)
40
# define spin_lock_irqsave(lock, flags) do { \
45
# define spin_unlock_irqrestore(lock, flags) do { \
47
restore_flags(flags); \
54
* Preempt support was added during 2.5.x development cycle, and later
55
* it was backported to 2.4.x. In 2.4.x backport these definitions
56
* live in linux/spinlock.h, that's why we put them here (in 2.6.x they
57
* are defined in linux/preempt.h which is included by linux/spinlock.h).
60
#define compat_preempt_disable() preempt_disable()
61
#define compat_preempt_enable() preempt_enable()
63
#define compat_preempt_disable() do { } while (0)
64
#define compat_preempt_enable() do { } while (0)
68
#endif /* __COMPAT_SPINLOCK_H__ */