diff options
Diffstat (limited to 'ace/Synch.i')
-rw-r--r-- | ace/Synch.i | 146 |
1 files changed, 55 insertions, 91 deletions
diff --git a/ace/Synch.i b/ace/Synch.i index 9c0338ee89e..768a4a724c7 100644 --- a/ace/Synch.i +++ b/ace/Synch.i @@ -443,87 +443,6 @@ ACE_Process_Semaphore::tryacquire_write (void) return this->tryacquire (); } -// Null ACE_Semaphore implementation - -ACE_INLINE -ACE_Null_Semaphore::ACE_Null_Semaphore (u_int, - int, - LPCTSTR, - void *, - int) -{ -} - -ACE_INLINE -ACE_Null_Semaphore::~ACE_Null_Semaphore (void) -{ -} - -ACE_INLINE int -ACE_Null_Semaphore::remove (void) -{ - return 0; -} - -ACE_INLINE int -ACE_Null_Semaphore::acquire (ACE_Time_Value &) -{ - return 0; -} - -ACE_INLINE int -ACE_Null_Semaphore::acquire (void) -{ - return 0; -} - -ACE_INLINE int -ACE_Null_Semaphore::tryacquire (void) -{ - return 0; -} - -ACE_INLINE int -ACE_Null_Semaphore::release (size_t) -{ - return 0; -} - -ACE_INLINE int -ACE_Null_Semaphore::release (void) -{ - return 0; -} - -ACE_INLINE int -ACE_Null_Semaphore::acquire_write (void) -{ - return 0; -} - -ACE_INLINE int -ACE_Null_Semaphore::tryacquire_write (void) -{ - return 0; -} - -ACE_INLINE int -ACE_Null_Semaphore::acquire_read (void) -{ - return 0; -} - -ACE_INLINE int -ACE_Null_Semaphore::tryacquire_read (void) -{ - return 0; -} - -ACE_INLINE void -ACE_Null_Semaphore::dump (void) const -{ -} - #if defined (ACE_HAS_THREADS) ACE_INLINE const ACE_thread_mutex_t & @@ -704,48 +623,93 @@ ACE_Condition_Thread_Mutex::mutex (void) return this->mutex_; } +ACE_INLINE +ACE_Recursive_Thread_Mutex::~ACE_Recursive_Thread_Mutex (void) +{ + // ACE_TRACE ("ACE_Recursive_Thread_Mutex::~ACE_Recursive_Thread_Mutex"); +} + +#if !defined (ACE_WIN32) +ACE_INLINE int +ACE_Recursive_Thread_Mutex::remove (void) +{ +// ACE_TRACE ("ACE_Recursive_Thread_Mutex::remove"); + int result = 0; + if (this->removed_ == 0) + { + this->removed_ = 1; + this->nesting_mutex_.remove (); + result = this->lock_available_.remove (); + } + return result; +} + ACE_INLINE void ACE_Recursive_Thread_Mutex::set_thread_id (ACE_thread_t t) { // ACE_TRACE ("ACE_Recursive_Thread_Mutex::set_thread_id"); -#if defined (ACE_HAS_RECURSIVE_MUTEXES) - ACE_UNUSED_ARG (t); -#else /* ! ACE_HAS_RECURSIVE_MUTEXES */ - this->recursive_mutex_.owner_id_ = t; -#endif /* ! ACE_HAS_RECURSIVE_MUTEXES */ + this->owner_id_ = t; } ACE_INLINE int ACE_Recursive_Thread_Mutex::acquire_read (void) { - return this->acquire (); + return acquire (); } ACE_INLINE int ACE_Recursive_Thread_Mutex::acquire_write (void) { - return this->acquire (); + return acquire (); } ACE_INLINE int ACE_Recursive_Thread_Mutex::tryacquire_read (void) { - return this->tryacquire (); + return tryacquire (); } ACE_INLINE int ACE_Recursive_Thread_Mutex::tryacquire_write (void) { - return this->tryacquire (); + return tryacquire (); +} + +#else /* ACE_WIN32 */ +// The counter part of the following two functions for non-Win32 platforms +// are located in file Synch.cpp +ACE_INLINE ACE_thread_t +ACE_Recursive_Thread_Mutex::get_thread_id (void) +{ + // @@ The structure CriticalSection in Win32 doesn't hold + // the thread handle of the thread that owns the lock. However + // it is still not clear at this point how to translate a + // thread handle to its corresponding thread id. + errno = ENOTSUP; + return ACE_OS::NULL_thread; } +ACE_INLINE int +ACE_Recursive_Thread_Mutex::get_nesting_level (void) +{ +#if defined (ACE_HAS_WINCE) + errno = ENOTSUP; + return -1; // @@ Is this the right value to return? +#else + return this->lock_.RecursionCount; +#endif /* ! ACE_HAS_WINCE */ +} + +#endif /* ACE_WIN32 */ + #endif /* ACE_HAS_THREADS */ // Explicitly destroy the mutex. ACE_INLINE int ACE_Process_Mutex::remove (void) { - return this->lock_.remove (); + int retv = this->lock_.remove (); + return retv; } // Acquire lock ownership (wait on priority queue if necessary). |