Ejemplo n.º 1
0
// 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;
}    
Ejemplo n.º 2
0
// 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;
}
Ejemplo n.º 3
0
// 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;
}