(file) Return to Semaphore.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common

Diff for /pegasus/src/Pegasus/Common/Semaphore.cpp between version 1.1.2.3 and 1.1.2.6

version 1.1.2.3, 2006/07/28 20:46:41 version 1.1.2.6, 2006/08/02 07:26:35
Line 39 
Line 39 
  
 PEGASUS_NAMESPACE_BEGIN PEGASUS_NAMESPACE_BEGIN
  
 static const int SEM_VALUE_MAX = 0x0000ffff;  static const Uint32 PEGASUS_SEM_VALUE_MAX = 0x0000ffff;
  
 //============================================================================== //==============================================================================
 // //
Line 54 
Line 54 
     pthread_mutex_init (&_rep.mutex, NULL);     pthread_mutex_init (&_rep.mutex, NULL);
     pthread_cond_init (&_rep.cond, NULL);     pthread_cond_init (&_rep.cond, NULL);
  
     if (initial > SEM_VALUE_MAX)      if (initial > PEGASUS_SEM_VALUE_MAX)
          _count = SEM_VALUE_MAX - 1;           _count = PEGASUS_SEM_VALUE_MAX - 1;
     else     else
          _count = initial;          _count = initial;
  
Line 95 
Line 95 
 #endif #endif
 } }
  
 #if defined(PEGASUS_PLATFORM_ZOS_ZSERIES_IBM) || defined(PEGASUS_PLATFORM_AIX_RS_IBMCXX)  #if defined(PEGASUS_PLATFORM_AIX_RS_IBMCXX)
 // cleanup function // cleanup function
 static void semaphore_cleanup(void *arg) static void semaphore_cleanup(void *arg)
 { {
Line 114 
Line 114 
  
    // Push cleanup function onto cleanup stack    // Push cleanup function onto cleanup stack
    // The mutex will unlock if the thread is killed early    // The mutex will unlock if the thread is killed early
 #if defined(PEGASUS_PLATFORM_ZOS_ZSERIES_IBM) || defined(PEGASUS_PLATFORM_AIX_RS_IBMCXX)  #if defined(PEGASUS_PLATFORM_AIX_RS_IBMCXX)
     Threads::cleanup_push(&semaphore_cleanup, &_rep);     Threads::cleanup_push(&semaphore_cleanup, &_rep);
 #endif #endif
  
Line 136 
Line 136 
  
     // Since we push an unlock onto the cleanup stack     // Since we push an unlock onto the cleanup stack
    // We will pop it off to release the mutex when leaving the critical section.    // We will pop it off to release the mutex when leaving the critical section.
 #if defined(PEGASUS_PLATFORM_ZOS_ZSERIES_IBM) || defined(PEGASUS_PLATFORM_AIX_RS_IBMCXX)  #if defined(PEGASUS_PLATFORM_AIX_RS_IBMCXX)
    Threads::cleanup_pop(1);    Threads::cleanup_pop(1);
 #endif #endif
    // Release mutex to leave critical section.    // Release mutex to leave critical section.
Line 155 
Line 155 
    pthread_mutex_lock (&_rep.mutex);    pthread_mutex_lock (&_rep.mutex);
    Boolean timedOut = false;    Boolean timedOut = false;
  
 #if defined(PEGASUS_PLATFORM_ZOS_ZSERIES_IBM) || \  #if defined(PEGASUS_PLATFORM_AIX_RS_IBMCXX)
     defined(PEGASUS_PLATFORM_AIX_RS_IBMCXX)  
    // Push cleanup function onto cleanup stack    // Push cleanup function onto cleanup stack
    // The mutex will unlock if the thread is killed early    // The mutex will unlock if the thread is killed early
    Thread::cleanup_push(&semaphore_cleanup, &_rep);    Thread::cleanup_push(&semaphore_cleanup, &_rep);
Line 194 
Line 193 
    // Decrement the waiters count.    // Decrement the waiters count.
    _rep.waiters--;    _rep.waiters--;
  
 #if defined(PEGASUS_PLATFORM_ZOS_ZSERIES_IBM) || \  #if defined(PEGASUS_PLATFORM_AIX_RS_IBMCXX)
     defined(PEGASUS_PLATFORM_AIX_RS_IBMCXX)  
    // Since we push an unlock onto the cleanup stack    // Since we push an unlock onto the cleanup stack
    // We will pop it off to release the mutex when leaving the critical section.    // We will pop it off to release the mutex when leaving the critical section.
    Threads::cleanup_pop(1);    Threads::cleanup_pop(1);
Line 243 
Line 241 
  
 Semaphore::Semaphore(Uint32 initial) Semaphore::Semaphore(Uint32 initial)
 { {
    if(initial > SEM_VALUE_MAX)     if(initial > PEGASUS_SEM_VALUE_MAX)
       initial = SEM_VALUE_MAX - 1;        initial = PEGASUS_SEM_VALUE_MAX - 1;
    sem_init(&_rep.sem,0,initial);    sem_init(&_rep.sem,0,initial);
    _rep.owner = Threads::self();    _rep.owner = Threads::self();
 } }
Line 357 
Line 355 
  
 Semaphore::Semaphore(Uint32 initial) Semaphore::Semaphore(Uint32 initial)
 { {
    if(initial > SEM_VALUE_MAX)     if(initial > PEGASUS_SEM_VALUE_MAX)
       initial = SEM_VALUE_MAX - 1;        initial = PEGASUS_SEM_VALUE_MAX - 1;
    _count = initial;    _count = initial;
    _rep.owner = Threads::self();    _rep.owner = Threads::self();
    _rep.sem = CreateSemaphore(NULL, initial, SEM_VALUE_MAX, NULL);     _rep.sem = CreateSemaphore(NULL, initial, PEGASUS_SEM_VALUE_MAX, NULL);
 } }
  
 Semaphore::~Semaphore() Semaphore::~Semaphore()


Legend:
Removed from v.1.1.2.3  
changed lines
  Added in v.1.1.2.6

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2