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