Shinichiro Nakamura
/
TestProgramForBugTopic1074
This is for http://mbed.org/forum/bugs-suggestions/topic/1074/
Semaphore.h
- Committer:
- shintamainjp
- Date:
- 2010-09-09
- Revision:
- 1:70466efca68e
- Parent:
- 0:49c0ef6111e6
File content as of revision 1:70466efca68e:
#ifndef _SEMAPHORE_H_ #define _SEMAPHORE_H_ /* * http://mbed.org/forum/mbed/topic/181/#comment-799 */ class Semaphore { public: Semaphore(): s(SemFree) {} bool try_enter() { int oldval = __ldrex(&s); if (oldval == SemTaken) { return false; } __strex(SemTaken, &s); return true; } void release() { __strex(SemFree, &s); s = SemFree; } private: enum { SemFree, SemTaken }; volatile int s; }; #endif