diff --git a/src/tools/cppunit/SemaphoreSyncObject.cpp b/src/tools/cppunit/SemaphoreSyncObject.cpp new file mode 100644 index 0000000000..017a7b0401 --- /dev/null +++ b/src/tools/cppunit/SemaphoreSyncObject.cpp @@ -0,0 +1,25 @@ +#include +#include + +SemaphoreSyncObject::SemaphoreSyncObject() + : fSemId(create_sem(1, "CppUnitSync")) +{ + if (fSemId < B_OK) + throw CppUnit::Exception("SemaphoreSyncObject::SemaphoreSyncObject() -- Error creating semaphore"); +} + +SemaphoreSyncObject::~SemaphoreSyncObject() { + delete_sem(fSemId); +} + +void +SemaphoreSyncObject::lock() { + if (acquire_sem(fSemId) < B_OK) + throw CppUnit::Exception("SemaphoreSyncObject::lock() -- Error acquiring semaphore"); +} + +void +SemaphoreSyncObject::unlock() { + if (release_sem(fSemId) < B_OK) + throw CppUnit::Exception("SemaphoreSyncObject::unlock() -- Error releasing semaphore"); +}