// Release the semaphore OsStatus OsCSemLinux::release(void) { OsStatus res; res = (pt_sem_post(&mSemImp) == POSIX_OK) ? OS_SUCCESS : OS_BUSY; #ifdef OS_CSEM_DEBUG if (res == OS_SUCCESS) updateReleaseStats(); #endif return res; }
// Release the semaphore OsStatus OsCSemLinux::release(void) { OsStatus res; #ifdef OS_SYNC_DEBUG mSyncCrumbs.dropCrumb(pthread_self(), crumbReleased); #endif res = (pt_sem_post(&mSemImp) == POSIX_OK) ? OS_SUCCESS : OS_BUSY; #ifdef OS_CSEM_DEBUG if (res == OS_SUCCESS) { updateReleaseStats(); } #endif return res; }
// Release the semaphore OsStatus OsCSemWnt::release(void) { long prevCount; OsStatus res; if (ReleaseSemaphore(mSemImp, 1, // add one to the previous value &prevCount)) // previous value res = OS_SUCCESS; else res = OS_UNSPECIFIED; #ifdef OS_CSEM_DEBUG if (res == OS_SUCCESS) { updateReleaseStats(); } #endif //OS_CSEM_DEBUG return res; }