add mutex files
authorBrian Demsky <bdemsky@uci.edu>
Tue, 18 Sep 2012 05:15:55 +0000 (22:15 -0700)
committerBrian Demsky <bdemsky@uci.edu>
Tue, 18 Sep 2012 05:18:13 +0000 (22:18 -0700)
mutex.cc [new file with mode: 0644]
mutex.h [new file with mode: 0644]

diff --git a/mutex.cc b/mutex.cc
new file mode 100644 (file)
index 0000000..b31b20a
--- /dev/null
+++ b/mutex.cc
@@ -0,0 +1,25 @@
+#include "mutex.h"
+#include "model.h"
+
+
+namespace std {
+mutex::mutex() :
+       owner(0), islocked(false)
+{
+
+}
+       
+void mutex::lock() {
+  model->switch_to_master(new ModelAction(ATOMIC_LOCK, std::memory_order_seq_cst, this));
+}
+       
+bool mutex::try_lock() {
+  model->switch_to_master(new ModelAction(ATOMIC_TRYLOCK, std::memory_order_seq_cst, this));
+  return thread_current()->get_return_value();
+}
+
+void mutex::unlock() {
+  model->switch_to_master(new ModelAction(ATOMIC_UNLOCK, std::memory_order_seq_cst, this));
+}
+
+}
diff --git a/mutex.h b/mutex.h
new file mode 100644 (file)
index 0000000..1c6c3f3
--- /dev/null
+++ b/mutex.h
@@ -0,0 +1,18 @@
+#ifndef MUTEX_H
+#define MUTEX_H
+#include "threads.h"
+
+namespace std {
+       class mutex {
+       public:
+               mutex();
+               ~mutex();
+               void lock();
+               bool try_lock();
+               void unlock();
+       private:
+               thread_id_t owner;
+               bool islocked;
+       };
+}
+#endif