summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBent Bisballe Nyeng <deva@aasimon.org>2016-12-08 19:00:10 +0100
committerBent Bisballe Nyeng <deva@aasimon.org>2016-12-08 19:00:10 +0100
commit1a4e50c88cfd2816b2addd9b135e27b20fc2e162 (patch)
tree43c1270d309a73c646d4f7028cc6af796d8911fb
parent6796cfa72452552cc4d0f6bcfdbecace682ea1f6 (diff)
Revert to using sem_* function family for FreeBSD.
-rw-r--r--src/semaphore.cc31
1 files changed, 6 insertions, 25 deletions
diff --git a/src/semaphore.cc b/src/semaphore.cc
index 77bce9a..42c9aec 100644
--- a/src/semaphore.cc
+++ b/src/semaphore.cc
@@ -33,16 +33,7 @@
#include "platform.h"
-#if DG_PLATFORM == DG_PLATFORM_OSX
-//#include <Multiprocessing.h>
-#include <CoreServices/CoreServices.h>
-
-#elif DG_PLATFORM == DG_PLATFORM_FREEBSD
-#include <sys/types.h>
-#include <sys/lock.h>
-#include <sys/sema.h>
-
-#elif DG_PLATFORM != DG_PLATFORM_WINDOWS
+#if DG_PLATFORM != DG_PLATFORM_WINDOWS
// Make sure we don't include /this/ file's header...
#include <../include/semaphore.h>
#include <errno.h>
@@ -50,13 +41,16 @@
#include <sys/time.h>
#endif
+#if DG_PLATFORM == DG_PLATFORM_OSX
+//#include <Multiprocessing.h>
+#include <CoreServices/CoreServices.h>
+#endif
+
struct semaphore_private_t {
#if DG_PLATFORM == DG_PLATFORM_WINDOWS
HANDLE semaphore;
#elif DG_PLATFORM == DG_PLATFORM_OSX
MPSemaphoreID semaphore;
-#elif DG_PLATFORM == DG_PLATFORM_FREEBSD
- struct sema *semaphore;
#else
sem_t semaphore;
#endif
@@ -75,8 +69,6 @@ Semaphore::Semaphore(std::size_t initial_count)
MPCreateSemaphore(std::numeric_limits<std::uint32_t>::max(),
initial_count,
&prv->semaphore);
-#elif DG_PLATFORM == DG_PLATFORM_FREEBSD
- sema_init(prv->semaphore, initial_count, "");
#else
const int pshared = 0;
memset(&prv->semaphore, 0, sizeof(sem_t));
@@ -90,7 +82,6 @@ Semaphore::~Semaphore()
CloseHandle(prv->semaphore);
#elif DG_PLATFORM == DG_PLATFORM_OSX
MPDeleteSemaphore(prv->semaphore);
-#elif DG_PLATFORM == DG_PLATFORM_FREEBSD
#else
sem_destroy(&prv->semaphore);
#endif
@@ -104,8 +95,6 @@ void Semaphore::post()
ReleaseSemaphore(prv->semaphore, 1, nullptr);
#elif DG_PLATFORM == DG_PLATFORM_OSX
MPSignalSemaphore(prv->semaphore);
-#elif DG_PLATFORM == DG_PLATFORM_FREEBSD
- sema_destroy(prv->semaphore)
#else
sem_post(&prv->semaphore);
#endif
@@ -128,12 +117,6 @@ bool Semaphore::wait(const std::chrono::milliseconds& timeout)
{
return false;
}
-#elif DG_PLATFORM == DG_PLATFORM_FREEBSD
- auto ret = sema_timedwait(prv->semaphore, timeout.count());
- if(ret != 0)
- {
- return false;
- }
#else
struct timespec ts;
@@ -179,8 +162,6 @@ void Semaphore::wait()
WaitForSingleObject(prv->semaphore, INFINITE);
#elif DG_PLATFORM == DG_PLATFORM_OSX
MPWaitOnSemaphore(prv->semaphore, kDurationForever);
-#elif DG_PLATFORM == DG_PLATFORM_FREEBSD
- sema_wait(prv->semaphore);
#else
sem_wait(&prv->semaphore);
#endif