summaryrefslogtreecommitdiff
path: root/ACE/ace/Mutex.h
diff options
context:
space:
mode:
authorAdam Mitz <mitza@ociweb.com>2015-11-06 17:07:11 -0600
committerAdam Mitz <mitza@ociweb.com>2015-11-06 17:07:11 -0600
commitac5e1702c9f9bee9f1f7bfce8c1a6f3847ea6b4b (patch)
tree0e70d1f51c39e688a05a6cdc2af58408222e4a0d /ACE/ace/Mutex.h
parent5272b5b81f92c298cb998b5bb0b0dbca3e7f29fe (diff)
downloadATCD-ac5e1702c9f9bee9f1f7bfce8c1a6f3847ea6b4b.tar.gz
Merged branch ace-face-safety (FACE Safety Profile import from OCITAO).
Diffstat (limited to 'ACE/ace/Mutex.h')
-rw-r--r--ACE/ace/Mutex.h37
1 files changed, 26 insertions, 11 deletions
diff --git a/ACE/ace/Mutex.h b/ACE/ace/Mutex.h
index fd4edb6fa98..686e3693f9f 100644
--- a/ACE/ace/Mutex.h
+++ b/ACE/ace/Mutex.h
@@ -23,15 +23,15 @@
#include "ace/OS_NS_unistd.h"
#include "ace/os_include/os_fcntl.h"
-# if !defined (ACE_DEFAULT_MUTEX_A)
-# define ACE_DEFAULT_MUTEX_A "ACE_MUTEX"
-# endif /* ACE_DEFAULT_MUTEX_A */
+#if !defined (ACE_DEFAULT_MUTEX_A)
+# define ACE_DEFAULT_MUTEX_A "ACE_MUTEX"
+#endif /* ACE_DEFAULT_MUTEX_A */
-# if defined (ACE_HAS_WCHAR)
-# define ACE_DEFAULT_MUTEX_W ACE_TEXT_WIDE(ACE_DEFAULT_MUTEX_A)
-# endif /* ACE_HAS_WCHAR */
+#if defined (ACE_HAS_WCHAR)
+# define ACE_DEFAULT_MUTEX_W ACE_TEXT_WIDE (ACE_DEFAULT_MUTEX_A)
+#endif /* ACE_HAS_WCHAR */
-# define ACE_DEFAULT_MUTEX ACE_TEXT (ACE_DEFAULT_MUTEX_A)
+#define ACE_DEFAULT_MUTEX ACE_TEXT (ACE_DEFAULT_MUTEX_A)
ACE_BEGIN_VERSIONED_NAMESPACE_DECL
@@ -144,6 +144,10 @@ public:
const ACE_mutex_t &lock (void) const;
ACE_mutex_t &lock (void);
+ /// If a file was created as the underlying storage for the mutex,
+ /// remove it from the filesystem (for process-shared mutexes).
+ static int unlink (const ACE_TCHAR *name);
+
/// Dump the state of an object.
void dump (void) const;
@@ -152,9 +156,20 @@ public:
// = This should be protected but some C++ compilers complain...
public:
-#if defined (ACE_HAS_PTHREADS) || defined(ACE_HAS_STHREADS)
+#if defined ACE_HAS_PTHREADS && defined ACE_LACKS_MUTEXATTR_PSHARED
+# define ACE_MUTEX_USE_PROCESS_LOCK
+# define ACE_MUTEX_PROCESS_LOCK_IS_SEMA
+ ACE_sema_t process_sema_;
+ typedef ACE_sema_t Process_Lock;
+#elif defined ACE_HAS_PTHREADS || defined ACE_HAS_STHREADS
+# define ACE_MUTEX_USE_PROCESS_LOCK
+# define ACE_MUTEX_PROCESS_LOCK_IS_MUTEX
+ typedef ACE_mutex_t Process_Lock;
+#endif
+
+#ifdef ACE_MUTEX_USE_PROCESS_LOCK
/// This lock resides in shared memory.
- ACE_mutex_t *process_lock_;
+ Process_Lock *process_lock_;
/**
* Remember the name of the mutex if we created it so we can unlink
@@ -162,7 +177,7 @@ public:
* can destroy it).
*/
const ACE_TCHAR *lockname_;
-#endif /* ACE_HAS_PTHREADS */
+#endif /* ACE_MUTEX_USE_PROCESS_LOCK */
/// Mutex type supported by the OS.
ACE_mutex_t lock_;
@@ -176,7 +191,7 @@ public:
private:
// Prevent assignment and initialization.
- void operator= (const ACE_Mutex &);
+ ACE_Mutex &operator= (const ACE_Mutex &);
ACE_Mutex (const ACE_Mutex &);
};