testharness for my semphore class

Dependencies:   mbed

Revision:
0:a2eb037fbb76
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Semaphore.h	Tue Sep 14 20:38:26 2010 +0000
@@ -0,0 +1,34 @@
+//  Copyright (C) 2010 Robert M. Bouwens
+
+#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) {
+            __clrex();
+            return false;
+        }
+        s = SemTaken;
+        __clrex();
+        return SemTaken == s;
+    };
+
+    void release() {
+        s = SemFree;
+    };
+
+private:
+    enum { SemFree = 1, SemTaken = 2 };
+    volatile int s;
+};
+
+#endif
\ No newline at end of file