summaryrefslogtreecommitdiff
path: root/ace/Synch.i
diff options
context:
space:
mode:
Diffstat (limited to 'ace/Synch.i')
-rw-r--r--ace/Synch.i146
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).