| 95 | } |
| 96 | |
| 97 | void Semaphore::release() |
| 98 | { |
| 99 | bool ok; |
| 100 | AssertFatal(mData, "Semaphore::releaseSemaphore: invalid semaphore"); |
| 101 | |
| 102 | ok = pthread_mutex_lock(&mData->mDarkroom); |
| 103 | AssertFatal(ok == 0,"Mutex Lock failed on mDarkroom in releaseSemaphore()."); |
| 104 | |
| 105 | mData->count++; |
| 106 | if(mData->count > 0) { |
| 107 | ok = pthread_cond_signal(&mData->mCond); |
| 108 | AssertFatal(ok == 0,"Signaling mCond failed in releaseSemaphore()."); |
| 109 | } |
| 110 | |
| 111 | ok = pthread_mutex_unlock(&mData->mDarkroom); |
| 112 | AssertFatal(ok == 0,"Mutex Unlock failed on mDarkroom when leaving releaseSemaphore()."); |
| 113 | } |
no outgoing calls
no test coverage detected