Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 #ifndef __LINUX_SPINLOCK_API_UP_H
  2 #define __LINUX_SPINLOCK_API_UP_H
  3 
  4 #ifndef __LINUX_SPINLOCK_H
  5 # error "please don't include this file directly"
  6 #endif
  7 
  8 /*
  9  * include/linux/spinlock_api_up.h
 10  *
 11  * spinlock API implementation on UP-nondebug (inlined implementation)
 12  *
 13  * portions Copyright 2005, Red Hat, Inc., Ingo Molnar
 14  * Released under the General Public License (GPL).
 15  */
 16 
 17 #define in_lock_functions(ADDR)         0
 18 
 19 #define assert_spin_locked(lock)        do { (void)(lock); } while (0)
 20 
 21 /*
 22  * In the UP-nondebug case there's no real locking going on, so the
 23  * only thing we have to do is to keep the preempt counts and irq
 24  * flags straight, to suppress compiler warnings of unused lock
 25  * variables, and to add the proper checker annotations:
 26  */
 27 #define __LOCK(lock) \
 28   do { preempt_disable(); __acquire(lock); (void)(lock); } while (0)
 29 
 30 #define __LOCK_BH(lock) \
 31   do { local_bh_disable(); __LOCK(lock); } while (0)
 32 
 33 #define __LOCK_IRQ(lock) \
 34   do { local_irq_disable(); __LOCK(lock); } while (0)
 35 
 36 #define __LOCK_IRQSAVE(lock, flags) \
 37   do { local_irq_save(flags); __LOCK(lock); } while (0)
 38 
 39 #define __UNLOCK(lock) \
 40   do { preempt_enable(); __release(lock); (void)(lock); } while (0)
 41 
 42 #define __UNLOCK_BH(lock) \
 43   do { preempt_enable_no_resched(); local_bh_enable(); __release(lock); (void)(lock); } while (0)
 44 
 45 #define __UNLOCK_IRQ(lock) \
 46   do { local_irq_enable(); __UNLOCK(lock); } while (0)
 47 
 48 #define __UNLOCK_IRQRESTORE(lock, flags) \
 49   do { local_irq_restore(flags); __UNLOCK(lock); } while (0)
 50 
 51 #define _spin_lock(lock)                        __LOCK(lock)
 52 #define _spin_lock_nested(lock, subclass)       __LOCK(lock)
 53 #define _read_lock(lock)                        __LOCK(lock)
 54 #define _write_lock(lock)                       __LOCK(lock)
 55 #define _spin_lock_bh(lock)                     __LOCK_BH(lock)
 56 #define _read_lock_bh(lock)                     __LOCK_BH(lock)
 57 #define _write_lock_bh(lock)                    __LOCK_BH(lock)
 58 #define _spin_lock_irq(lock)                    __LOCK_IRQ(lock)
 59 #define _read_lock_irq(lock)                    __LOCK_IRQ(lock)
 60 #define _write_lock_irq(lock)                   __LOCK_IRQ(lock)
 61 #define _spin_lock_irqsave(lock, flags)         __LOCK_IRQSAVE(lock, flags)
 62 #define _read_lock_irqsave(lock, flags)         __LOCK_IRQSAVE(lock, flags)
 63 #define _write_lock_irqsave(lock, flags)        __LOCK_IRQSAVE(lock, flags)
 64 #define _spin_trylock(lock)                     ({ __LOCK(lock); 1; })
 65 #define _read_trylock(lock)                     ({ __LOCK(lock); 1; })
 66 #define _write_trylock(lock)                    ({ __LOCK(lock); 1; })
 67 #define _spin_trylock_bh(lock)                  ({ __LOCK_BH(lock); 1; })
 68 #define _spin_unlock(lock)                      __UNLOCK(lock)
 69 #define _read_unlock(lock)                      __UNLOCK(lock)
 70 #define _write_unlock(lock)                     __UNLOCK(lock)
 71 #define _spin_unlock_bh(lock)                   __UNLOCK_BH(lock)
 72 #define _write_unlock_bh(lock)                  __UNLOCK_BH(lock)
 73 #define _read_unlock_bh(lock)                   __UNLOCK_BH(lock)
 74 #define _spin_unlock_irq(lock)                  __UNLOCK_IRQ(lock)
 75 #define _read_unlock_irq(lock)                  __UNLOCK_IRQ(lock)
 76 #define _write_unlock_irq(lock)                 __UNLOCK_IRQ(lock)
 77 #define _spin_unlock_irqrestore(lock, flags)    __UNLOCK_IRQRESTORE(lock, flags)
 78 #define _read_unlock_irqrestore(lock, flags)    __UNLOCK_IRQRESTORE(lock, flags)
 79 #define _write_unlock_irqrestore(lock, flags)   __UNLOCK_IRQRESTORE(lock, flags)
 80 
 81 #endif /* __LINUX_SPINLOCK_API_UP_H */
 82 
  This page was automatically generated by the LXR engine.