1951a39d68df598db08dfced8b4707755864a0492Ying Wang/****************************************************************************
2951a39d68df598db08dfced8b4707755864a0492Ying Wang ****************************************************************************
3951a39d68df598db08dfced8b4707755864a0492Ying Wang ***
4951a39d68df598db08dfced8b4707755864a0492Ying Wang ***   This header was automatically generated from a Linux kernel header
5951a39d68df598db08dfced8b4707755864a0492Ying Wang ***   of the same name, to make information necessary for userspace to
6951a39d68df598db08dfced8b4707755864a0492Ying Wang ***   call into the kernel available to libc.  It contains only constants,
7951a39d68df598db08dfced8b4707755864a0492Ying Wang ***   structures, and macros generated from the original header, and thus,
8951a39d68df598db08dfced8b4707755864a0492Ying Wang ***   contains no copyrightable information.
9951a39d68df598db08dfced8b4707755864a0492Ying Wang ***
10951a39d68df598db08dfced8b4707755864a0492Ying Wang ****************************************************************************
11951a39d68df598db08dfced8b4707755864a0492Ying Wang ****************************************************************************/
12951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifndef __LINUX_SPINLOCK_API_UP_H
13951a39d68df598db08dfced8b4707755864a0492Ying Wang#define __LINUX_SPINLOCK_API_UP_H
14951a39d68df598db08dfced8b4707755864a0492Ying Wang
15951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifndef __LINUX_SPINLOCK_H
16951a39d68df598db08dfced8b4707755864a0492Ying Wang#error "please don't include this file directly"
17951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif
18951a39d68df598db08dfced8b4707755864a0492Ying Wang
19951a39d68df598db08dfced8b4707755864a0492Ying Wang#define in_lock_functions(ADDR) 0
20951a39d68df598db08dfced8b4707755864a0492Ying Wang
21951a39d68df598db08dfced8b4707755864a0492Ying Wang#define assert_spin_locked(lock) do { (void)(lock); } while (0)
22951a39d68df598db08dfced8b4707755864a0492Ying Wang
23951a39d68df598db08dfced8b4707755864a0492Ying Wang#define __LOCK(lock)   do { preempt_disable(); __acquire(lock); (void)(lock); } while (0)
24951a39d68df598db08dfced8b4707755864a0492Ying Wang
25951a39d68df598db08dfced8b4707755864a0492Ying Wang#define __LOCK_BH(lock)   do { local_bh_disable(); __LOCK(lock); } while (0)
26951a39d68df598db08dfced8b4707755864a0492Ying Wang
27951a39d68df598db08dfced8b4707755864a0492Ying Wang#define __LOCK_IRQ(lock)   do { local_irq_disable(); __LOCK(lock); } while (0)
28951a39d68df598db08dfced8b4707755864a0492Ying Wang
29951a39d68df598db08dfced8b4707755864a0492Ying Wang#define __LOCK_IRQSAVE(lock, flags)   do { local_irq_save(flags); __LOCK(lock); } while (0)
30951a39d68df598db08dfced8b4707755864a0492Ying Wang
31951a39d68df598db08dfced8b4707755864a0492Ying Wang#define __UNLOCK(lock)   do { preempt_enable(); __release(lock); (void)(lock); } while (0)
32951a39d68df598db08dfced8b4707755864a0492Ying Wang
33951a39d68df598db08dfced8b4707755864a0492Ying Wang#define __UNLOCK_BH(lock)   do { preempt_enable_no_resched(); local_bh_enable(); __release(lock); (void)(lock); } while (0)
34951a39d68df598db08dfced8b4707755864a0492Ying Wang
35951a39d68df598db08dfced8b4707755864a0492Ying Wang#define __UNLOCK_IRQ(lock)   do { local_irq_enable(); __UNLOCK(lock); } while (0)
36951a39d68df598db08dfced8b4707755864a0492Ying Wang
37951a39d68df598db08dfced8b4707755864a0492Ying Wang#define __UNLOCK_IRQRESTORE(lock, flags)   do { local_irq_restore(flags); __UNLOCK(lock); } while (0)
38951a39d68df598db08dfced8b4707755864a0492Ying Wang
39951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _spin_lock(lock) __LOCK(lock)
40951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _spin_lock_nested(lock, subclass) __LOCK(lock)
41951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _read_lock(lock) __LOCK(lock)
42951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _write_lock(lock) __LOCK(lock)
43951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _spin_lock_bh(lock) __LOCK_BH(lock)
44951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _read_lock_bh(lock) __LOCK_BH(lock)
45951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _write_lock_bh(lock) __LOCK_BH(lock)
46951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _spin_lock_irq(lock) __LOCK_IRQ(lock)
47951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _read_lock_irq(lock) __LOCK_IRQ(lock)
48951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _write_lock_irq(lock) __LOCK_IRQ(lock)
49951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _spin_lock_irqsave(lock, flags) __LOCK_IRQSAVE(lock, flags)
50951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _read_lock_irqsave(lock, flags) __LOCK_IRQSAVE(lock, flags)
51951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _write_lock_irqsave(lock, flags) __LOCK_IRQSAVE(lock, flags)
52951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _spin_trylock(lock) ({ __LOCK(lock); 1; })
53951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _read_trylock(lock) ({ __LOCK(lock); 1; })
54951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _write_trylock(lock) ({ __LOCK(lock); 1; })
55951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _spin_trylock_bh(lock) ({ __LOCK_BH(lock); 1; })
56951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _spin_unlock(lock) __UNLOCK(lock)
57951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _read_unlock(lock) __UNLOCK(lock)
58951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _write_unlock(lock) __UNLOCK(lock)
59951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _spin_unlock_bh(lock) __UNLOCK_BH(lock)
60951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _write_unlock_bh(lock) __UNLOCK_BH(lock)
61951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _read_unlock_bh(lock) __UNLOCK_BH(lock)
62951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _spin_unlock_irq(lock) __UNLOCK_IRQ(lock)
63951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _read_unlock_irq(lock) __UNLOCK_IRQ(lock)
64951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _write_unlock_irq(lock) __UNLOCK_IRQ(lock)
65951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _spin_unlock_irqrestore(lock, flags) __UNLOCK_IRQRESTORE(lock, flags)
66951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _read_unlock_irqrestore(lock, flags) __UNLOCK_IRQRESTORE(lock, flags)
67951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _write_unlock_irqrestore(lock, flags) __UNLOCK_IRQRESTORE(lock, flags)
68951a39d68df598db08dfced8b4707755864a0492Ying Wang
69951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif
70