00001
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00032
00033 #ifndef GROOVX_RUTZ_SPIN_LOCK_DARWIN_H_UTC20070904210802_DEFINED
00034 #define GROOVX_RUTZ_SPIN_LOCK_DARWIN_H_UTC20070904210802_DEFINED
00035
00036 #include <libkern/OSAtomic.h>
00037
00038 namespace rutz
00039 {
00040
00041 class spin_lock_darwin
00042 {
00043 private:
00044 OSSpinLock m_lock;
00045
00046 spin_lock_darwin(const spin_lock_darwin&);
00047 spin_lock_darwin& operator=(const spin_lock_darwin&);
00048
00049 public:
00050 spin_lock_darwin()
00051 { OSSpinLockUnlock(&m_lock); }
00052
00053 void lock()
00054 { OSSpinLockLock(&m_lock); }
00055
00056 bool try_lock()
00057 { return OSSpinLockTry(&m_lock); }
00058
00059 void unlock()
00060 { OSSpinLockUnlock(&m_lock); }
00061 };
00062
00063 }
00064
00065 static const char vcid_groovx_rutz_spin_lock_darwin_h_utc20070904210802[] = "$Id: spin_lock_darwin.h 10134 2008-03-04 17:58:05Z rjpeters $ $HeadURL: file:///lab/rjpeters/svnrepo/code/trunk/groovx/src/rutz/spin_lock_darwin.h $";
00066 #endif // !GROOVX_RUTZ_SPIN_LOCK_DARWIN_H_UTC20070904210802DEFINED