aboutsummaryrefslogtreecommitdiff
path: root/databases/firebird20-server/files/patch-src::common::classes::locks.h
diff options
context:
space:
mode:
Diffstat (limited to 'databases/firebird20-server/files/patch-src::common::classes::locks.h')
-rw-r--r--databases/firebird20-server/files/patch-src::common::classes::locks.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/databases/firebird20-server/files/patch-src::common::classes::locks.h b/databases/firebird20-server/files/patch-src::common::classes::locks.h
new file mode 100644
index 000000000000..e2948dd4bbd2
--- /dev/null
+++ b/databases/firebird20-server/files/patch-src::common::classes::locks.h
@@ -0,0 +1,49 @@
+--- src/common/classes/locks.h.orig Sun Aug 17 14:56:47 2003
++++ src/common/classes/locks.h Wed Nov 12 11:12:25 2003
+@@ -77,7 +77,7 @@
+
+ /* Process-local spinlock. Used to manage memory heaps in threaded environment. */
+ // Pthreads version of the class
+-#ifndef SOLARIS
++#if !defined(SOLARIS) && !defined(DARWIN) && !defined(FREEBSD)
+ class Spinlock {
+ private:
+ pthread_spinlock_t spinlock;
+@@ -100,6 +100,7 @@
+ }
+ };
+ #else
++#ifdef SOLARIS
+ // Who knows why Solaris 2.6 have not THIS funny spins?
+ //The next code is not comlpeted but let me compile //Konstantin
+ class Spinlock {
+@@ -123,6 +124,29 @@
+ system_call_failed::raise();
+ }
+ };
++#else // DARWIN and FREEBSD
++class Spinlock {
++private:
++ pthread_mutex_t mlock;
++public:
++ Spinlock() {
++ if (pthread_mutex_init(&mlock, 0))
++ system_call_failed::raise();
++ }
++ ~Spinlock() {
++ if (pthread_mutex_destroy(&mlock))
++ system_call_failed::raise();
++ }
++ void enter() {
++ if (pthread_mutex_lock(&mlock))
++ system_call_failed::raise();
++ }
++ void leave() {
++ if (pthread_mutex_unlock(&mlock))
++ system_call_failed::raise();
++ }
++};
++#endif
+
+ #endif
+ #endif