$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r76189 - in branches/release/boost/interprocess: . streams sync sync/posix sync/shm sync/spin sync/windows sync/xsi
From: igaztanaga_at_[hidden]
Date: 2011-12-26 12:42:25
Author: igaztanaga
Date: 2011-12-26 12:42:22 EST (Mon, 26 Dec 2011)
New Revision: 76189
URL: http://svn.boost.org/trac/boost/changeset/76189
Log:
Changes for 1.49
Added:
   branches/release/boost/interprocess/sync/posix/condition.hpp
      - copied unchanged from r76181, /trunk/boost/interprocess/sync/posix/condition.hpp
   branches/release/boost/interprocess/sync/posix/mutex.hpp
      - copied unchanged from r76181, /trunk/boost/interprocess/sync/posix/mutex.hpp
   branches/release/boost/interprocess/sync/posix/named_mutex.hpp
      - copied unchanged from r76181, /trunk/boost/interprocess/sync/posix/named_mutex.hpp
   branches/release/boost/interprocess/sync/posix/named_semaphore.hpp
      - copied unchanged from r76181, /trunk/boost/interprocess/sync/posix/named_semaphore.hpp
   branches/release/boost/interprocess/sync/posix/recursive_mutex.hpp
      - copied unchanged from r76181, /trunk/boost/interprocess/sync/posix/recursive_mutex.hpp
   branches/release/boost/interprocess/sync/posix/semaphore.hpp
      - copied unchanged from r76181, /trunk/boost/interprocess/sync/posix/semaphore.hpp
   branches/release/boost/interprocess/sync/shm/
      - copied from r76181, /trunk/boost/interprocess/sync/shm/
   branches/release/boost/interprocess/sync/spin/
      - copied from r76181, /trunk/boost/interprocess/sync/spin/
   branches/release/boost/interprocess/sync/windows/
      - copied from r76181, /trunk/boost/interprocess/sync/windows/
Removed:
   branches/release/boost/interprocess/sync/posix/interprocess_barrier.hpp
   branches/release/boost/interprocess/sync/posix/interprocess_condition.hpp
   branches/release/boost/interprocess/sync/posix/interprocess_mutex.hpp
   branches/release/boost/interprocess/sync/posix/interprocess_semaphore.hpp
Properties modified: 
   branches/release/boost/interprocess/   (props changed)
Text files modified: 
   branches/release/boost/interprocess/managed_external_buffer.hpp            |    11 ++                                      
   branches/release/boost/interprocess/streams/bufferstream.hpp               |     2                                         
   branches/release/boost/interprocess/streams/vectorstream.hpp               |     2                                         
   branches/release/boost/interprocess/sync/file_lock.hpp                     |     6                                         
   branches/release/boost/interprocess/sync/interprocess_condition.hpp        |    71 ++++++++----------                      
   branches/release/boost/interprocess/sync/interprocess_semaphore.hpp        |    70 ++++++++++++-----                       
   branches/release/boost/interprocess/sync/interprocess_upgradable_mutex.hpp |     3                                         
   branches/release/boost/interprocess/sync/named_semaphore.hpp               |    94 ++---------------------                 
   branches/release/boost/interprocess/sync/posix/pthread_helpers.hpp         |     2                                         
   branches/release/boost/interprocess/sync/posix/ptime_to_timespec.hpp       |     2                                         
   branches/release/boost/interprocess/sync/posix/semaphore_wrapper.hpp       |   156 +++++++++++++-------------------------- 
   branches/release/boost/interprocess/sync/scoped_lock.hpp                   |     8 +-                                      
   branches/release/boost/interprocess/sync/upgradable_lock.hpp               |     8 +-                                      
   branches/release/boost/interprocess/sync/xsi/xsi_named_mutex.hpp           |     4                                         
   14 files changed, 168 insertions(+), 271 deletions(-)
Modified: branches/release/boost/interprocess/managed_external_buffer.hpp
==============================================================================
--- branches/release/boost/interprocess/managed_external_buffer.hpp	(original)
+++ branches/release/boost/interprocess/managed_external_buffer.hpp	2011-12-26 12:42:22 EST (Mon, 26 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
@@ -19,8 +19,13 @@
 #include <boost/interprocess/detail/workaround.hpp>
 #include <boost/interprocess/creation_tags.hpp>
 #include <boost/interprocess/detail/managed_memory_impl.hpp>
-#include <boost/interprocess/detail/move.hpp>
+#include <boost/move/move.hpp>
 #include <boost/assert.hpp>
+//These includes needed to fulfill default template parameters of
+//predeclarations in interprocess_fwd.hpp
+#include <boost/interprocess/mem_algo/rbtree_best_fit.hpp>  
+#include <boost/interprocess/sync/mutex_family.hpp>
+#include <boost/interprocess/indexes/iset_index.hpp>
 
 //!\file
 //!Describes a named user memory allocation user class. 
@@ -85,7 +90,7 @@
    //!Moves the ownership of "moved"'s managed memory to *this. Does not throw
    basic_managed_external_buffer &operator=(BOOST_RV_REF(basic_managed_external_buffer) moved)
    {
-      basic_managed_external_buffer tmp(boost::interprocess::move(moved));
+      basic_managed_external_buffer tmp(boost::move(moved));
       this->swap(tmp);
       return *this;
    }
Modified: branches/release/boost/interprocess/streams/bufferstream.hpp
==============================================================================
--- branches/release/boost/interprocess/streams/bufferstream.hpp	(original)
+++ branches/release/boost/interprocess/streams/bufferstream.hpp	2011-12-26 12:42:22 EST (Mon, 26 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
Modified: branches/release/boost/interprocess/streams/vectorstream.hpp
==============================================================================
--- branches/release/boost/interprocess/streams/vectorstream.hpp	(original)
+++ branches/release/boost/interprocess/streams/vectorstream.hpp	2011-12-26 12:42:22 EST (Mon, 26 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
Modified: branches/release/boost/interprocess/sync/file_lock.hpp
==============================================================================
--- branches/release/boost/interprocess/sync/file_lock.hpp	(original)
+++ branches/release/boost/interprocess/sync/file_lock.hpp	2011-12-26 12:42:22 EST (Mon, 26 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
@@ -21,7 +21,7 @@
 #include <boost/interprocess/detail/os_file_functions.hpp>
 #include <boost/interprocess/detail/os_thread_functions.hpp>
 #include <boost/interprocess/detail/posix_time_types_wrk.hpp>
-#include <boost/interprocess/detail/move.hpp>
+#include <boost/move/move.hpp>
 
 //!\file
 //!Describes a class that wraps file locking capabilities.
@@ -65,7 +65,7 @@
    //!Does not throw
    file_lock &operator=(BOOST_RV_REF(file_lock) moved)
    {  
-      file_lock tmp(boost::interprocess::move(moved));
+      file_lock tmp(boost::move(moved));
       this->swap(tmp);
       return *this;  
    }
Modified: branches/release/boost/interprocess/sync/interprocess_condition.hpp
==============================================================================
--- branches/release/boost/interprocess/sync/interprocess_condition.hpp	(original)
+++ branches/release/boost/interprocess/sync/interprocess_condition.hpp	2011-12-26 12:42:22 EST (Mon, 26 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
@@ -21,22 +21,20 @@
 #include <boost/interprocess/detail/workaround.hpp>
 
 #include <boost/interprocess/detail/posix_time_types_wrk.hpp>
-#include <boost/interprocess/sync/scoped_lock.hpp>
-#include <boost/interprocess/sync/interprocess_condition.hpp>
 #include <boost/interprocess/sync/interprocess_mutex.hpp>
 #include <boost/interprocess/exceptions.hpp>
 #include <boost/limits.hpp>
 #include <boost/assert.hpp>
 
 #if !defined(BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION) && defined(BOOST_INTERPROCESS_POSIX_PROCESS_SHARED)
-   #include <pthread.h>
-   #include <errno.h>   
-   #include <boost/interprocess/sync/posix/pthread_helpers.hpp>
+   #include <boost/interprocess/sync/posix/condition.hpp>
    #define BOOST_INTERPROCESS_USE_POSIX
+//Experimental...
+//#elif !defined(BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION) && defined (BOOST_INTERPROCESS_WINDOWS)
+//   #include <boost/interprocess/sync/windows/condition.hpp>
+//   #define BOOST_INTERPROCESS_USE_WINDOWS
 #else
-   #include <boost/interprocess/detail/atomic.hpp>
-   #include <boost/cstdint.hpp>
-   #include <boost/interprocess/detail/os_thread_functions.hpp>
+   #include <boost/interprocess/sync/spin/condition.hpp>
    #define BOOST_INTERPROCESS_USE_GENERIC_EMULATION
 #endif
 
@@ -66,19 +64,21 @@
    /// @endcond
    public:
    //!Constructs a interprocess_condition. On error throws interprocess_exception.
-   interprocess_condition();
+   interprocess_condition(){}
 
    //!Destroys *this
    //!liberating system resources.
-   ~interprocess_condition();
+   ~interprocess_condition(){}
 
    //!If there is a thread waiting on *this, change that 
    //!thread's state to ready. Otherwise there is no effect.
-   void notify_one();
+   void notify_one()
+   {  m_condition.notify_one();  }
 
    //!Change the state of all threads waiting on *this to ready.
    //!If there are no waiting threads, notify_all() has no effect.
-   void notify_all();
+   void notify_all()
+   {  m_condition.notify_all();  }
 
    //!Releases the lock on the interprocess_mutex object associated with lock, blocks 
    //!the current thread of execution until readied by a call to 
@@ -88,7 +88,7 @@
    {
       if (!lock)
          throw lock_exception();
-      do_wait(*lock.mutex());
+      this->do_wait(*lock.mutex());
    }
 
    //!The same as:
@@ -100,7 +100,7 @@
          throw lock_exception();
 
       while (!pred())
-         do_wait(*lock.mutex());
+         this->do_wait(*lock.mutex());
    }
 
    //!Releases the lock on the interprocess_mutex object associated with lock, blocks 
@@ -117,7 +117,7 @@
       }
       if (!lock)
             throw lock_exception();
-      return do_timed_wait(abs_time, *lock.mutex());
+      return this->do_timed_wait(abs_time, *lock.mutex());
    }
 
    //!The same as:   while (!pred()) { 
@@ -133,7 +133,7 @@
       if (!lock)
             throw lock_exception();
       while (!pred()){
-         if (!do_timed_wait(abs_time, *lock.mutex()))
+         if (!this->do_timed_wait(abs_time, *lock.mutex()))
             return pred();
       }
 
@@ -141,39 +141,32 @@
    }
 
    /// @cond
-   private:
-   void do_wait(interprocess_mutex  &mut);
 
-   bool do_timed_wait(const boost::posix_time::ptime &abs_time, interprocess_mutex &mut);
+   void do_wait(interprocess_mutex &mut)
+   {  m_condition.do_wait(mut.mutex);  }
+
+   bool do_timed_wait(const boost::posix_time::ptime &abs_time, interprocess_mutex &mut)
+   {  return m_condition.do_timed_wait(abs_time, mut.mutex);  }
 
+   private:
    #if defined (BOOST_INTERPROCESS_USE_GENERIC_EMULATION)
-      enum { SLEEP = 0, NOTIFY_ONE, NOTIFY_ALL };
-      interprocess_mutex         m_enter_mut;
-      //interprocess_mutex       m_check_mut;
-      volatile boost::uint32_t    m_command;
-      volatile boost::uint32_t    m_num_waiters;
-      bool do_timed_wait(bool tout_enabled, const boost::posix_time::ptime &abs_time, interprocess_mutex &mut);
-      void notify(boost::uint32_t command);
+      #undef BOOST_INTERPROCESS_USE_GENERIC_EMULATION
+      ipcdetail::spin_condition m_condition;
    #elif defined(BOOST_INTERPROCESS_USE_POSIX)
-      pthread_cond_t   m_condition;
+      #undef BOOST_INTERPROCESS_USE_POSIX
+      ipcdetail::posix_condition m_condition;
+   #elif defined(BOOST_INTERPROCESS_USE_WINDOWS)
+      #undef BOOST_INTERPROCESS_USE_WINDOWS
+      ipcdetail::windows_condition m_condition;
+   #else
+      #error "Unknown platform for interprocess_mutex"
    #endif
    /// @endcond
 };
 
 }  //namespace interprocess
-
 }  // namespace boost
 
-#ifdef BOOST_INTERPROCESS_USE_GENERIC_EMULATION
-#  undef BOOST_INTERPROCESS_USE_GENERIC_EMULATION
-#  include <boost/interprocess/sync/emulation/interprocess_condition.hpp>
-#endif
-
-#ifdef BOOST_INTERPROCESS_USE_POSIX
-#  undef BOOST_INTERPROCESS_USE_POSIX
-#  include <boost/interprocess/sync/posix/interprocess_condition.hpp>
-#endif
-
 #include <boost/interprocess/detail/config_end.hpp>
 
 #endif // BOOST_INTERPROCESS_CONDITION_HPP
Modified: branches/release/boost/interprocess/sync/interprocess_semaphore.hpp
==============================================================================
--- branches/release/boost/interprocess/sync/interprocess_semaphore.hpp	(original)
+++ branches/release/boost/interprocess/sync/interprocess_semaphore.hpp	2011-12-26 12:42:22 EST (Mon, 26 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
@@ -19,23 +19,21 @@
 
 #include <boost/interprocess/detail/config_begin.hpp>
 #include <boost/interprocess/detail/workaround.hpp>
+
 #include <boost/interprocess/creation_tags.hpp>
 #include <boost/interprocess/exceptions.hpp>
 #include <boost/interprocess/detail/posix_time_types_wrk.hpp>
 
 #if !defined(BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION) && \
    (defined(BOOST_INTERPROCESS_POSIX_PROCESS_SHARED) && defined(BOOST_INTERPROCESS_POSIX_NAMED_SEMAPHORES))
-   #include <fcntl.h>      //O_CREAT, O_*... 
-   #include <unistd.h>     //close
-   #include <string>       //std::string
-   #include <semaphore.h>  //sem_* family, SEM_VALUE_MAX
-   #include <sys/stat.h>   //mode_t, S_IRWXG, S_IRWXO, S_IRWXU,
-   #include <boost/interprocess/sync/posix/semaphore_wrapper.hpp>
+   #include <boost/interprocess/sync/posix/semaphore.hpp>
    #define BOOST_INTERPROCESS_USE_POSIX
+//Experimental...
+//#elif !defined(BOOST_INTERPROCESS_FORCE_GENERIC_EMULATION) && defined (BOOST_INTERPROCESS_WINDOWS)
+//   #include <boost/interprocess/sync/windows/semaphore.hpp>
+//   #define BOOST_INTERPROCESS_USE_WINDOWS
 #else
-   #include <boost/interprocess/detail/atomic.hpp>
-   #include <boost/cstdint.hpp>
-   #include <boost/interprocess/detail/os_thread_functions.hpp>
+   #include <boost/interprocess/sync/spin/semaphore.hpp>
    #define BOOST_INTERPROCESS_USE_GENERIC_EMULATION
 #endif
 
@@ -45,7 +43,6 @@
 //!Describes a interprocess_semaphore class for inter-process synchronization
 
 namespace boost {
-
 namespace interprocess {
 
 //!Wraps a interprocess_semaphore that can be placed in shared memory and can be 
@@ -93,26 +90,55 @@
    /// @cond
    private:
    #if defined(BOOST_INTERPROCESS_USE_GENERIC_EMULATION)
-   volatile boost::uint32_t m_count;
+      #undef BOOST_INTERPROCESS_USE_GENERIC_EMULATION
+      ipcdetail::spin_semaphore m_sem;
+   #elif defined(BOOST_INTERPROCESS_USE_WINDOWS)
+      #undef BOOST_INTERPROCESS_USE_WINDOWS
+      ipcdetail::windows_semaphore m_sem;
    #else 
-   ipcdetail::semaphore_wrapper m_sem;
+      #undef BOOST_INTERPROCESS_USE_POSIX
+      ipcdetail::posix_semaphore m_sem;
    #endif   //#if defined(BOOST_INTERPROCESS_USE_GENERIC_EMULATION)
    /// @endcond
 };
 
 }  //namespace interprocess {
-
 }  //namespace boost {
 
-#ifdef BOOST_INTERPROCESS_USE_GENERIC_EMULATION
-#  undef BOOST_INTERPROCESS_USE_GENERIC_EMULATION
-#  include <boost/interprocess/sync/emulation/interprocess_semaphore.hpp>
-#endif
+namespace boost {
+namespace interprocess {
 
-#ifdef BOOST_INTERPROCESS_USE_POSIX
-#  undef BOOST_INTERPROCESS_USE_POSIX
-#  include <boost/interprocess/sync/posix/interprocess_semaphore.hpp>
-#endif
+inline interprocess_semaphore::interprocess_semaphore(unsigned int initialCount)
+   : m_sem(initialCount)
+{}
+
+inline interprocess_semaphore::~interprocess_semaphore(){}
+
+inline void interprocess_semaphore::wait()
+{
+   #ifdef BOOST_INTERPROCESS_ENABLE_TIMEOUT_WHEN_LOCKING
+      boost::posix_time::ptime wait_time
+         = boost::posix_time::microsec_clock::universal_time()
+         + boost::posix_time::milliseconds(BOOST_INTERPROCESS_TIMEOUT_WHEN_LOCKING_DURATION_MS);
+      if (!m_sem.timed_wait(wait_time))
+      {
+         throw interprocess_exception(timeout_when_waiting_error, "Interprocess semaphore timeout when waiting. Possible deadlock: owner died without posting?");
+      }
+   #else
+      m_sem.wait();
+   #endif
+}
+inline bool interprocess_semaphore::try_wait()
+{ return m_sem.try_wait(); }
+
+inline bool interprocess_semaphore::timed_wait(const boost::posix_time::ptime &abs_time)
+{ return m_sem.timed_wait(abs_time); }
+
+inline void interprocess_semaphore::post()
+{ m_sem.post(); }
+
+}  //namespace interprocess {
+}  //namespace boost {
 
 #include <boost/interprocess/detail/config_end.hpp>
 
Modified: branches/release/boost/interprocess/sync/interprocess_upgradable_mutex.hpp
==============================================================================
--- branches/release/boost/interprocess/sync/interprocess_upgradable_mutex.hpp	(original)
+++ branches/release/boost/interprocess/sync/interprocess_upgradable_mutex.hpp	2011-12-26 12:42:22 EST (Mon, 26 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
@@ -18,6 +18,7 @@
 #include <boost/interprocess/detail/config_begin.hpp>
 #include <boost/interprocess/detail/workaround.hpp>
 #include <boost/interprocess/sync/scoped_lock.hpp>
+#include <boost/interprocess/detail/posix_time_types_wrk.hpp>
 #include <boost/interprocess/sync/interprocess_mutex.hpp>
 #include <boost/interprocess/sync/interprocess_condition.hpp>
 #include <climits>
Modified: branches/release/boost/interprocess/sync/named_semaphore.hpp
==============================================================================
--- branches/release/boost/interprocess/sync/named_semaphore.hpp	(original)
+++ branches/release/boost/interprocess/sync/named_semaphore.hpp	2011-12-26 12:42:22 EST (Mon, 26 Dec 2011)
@@ -1,6 +1,6 @@
  //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
@@ -24,12 +24,9 @@
 #include <boost/interprocess/detail/posix_time_types_wrk.hpp>
 
 #if defined(BOOST_INTERPROCESS_NAMED_SEMAPHORE_USES_POSIX_SEMAPHORES)
-#include <boost/interprocess/sync/posix/semaphore_wrapper.hpp>
+#include <boost/interprocess/sync/posix/named_semaphore.hpp>
 #else
-#include <boost/interprocess/shared_memory_object.hpp>
-#include <boost/interprocess/detail/managed_open_or_create_impl.hpp>
-#include <boost/interprocess/sync/interprocess_semaphore.hpp>
-#include <boost/interprocess/sync/emulation/named_creation_functor.hpp>
+#include <boost/interprocess/sync/shm/named_semaphore.hpp>
 #endif
 
 //!\file
@@ -109,33 +106,28 @@
    void dont_close_on_destruction();
 
    #if defined(BOOST_INTERPROCESS_NAMED_SEMAPHORE_USES_POSIX_SEMAPHORES)
-   ipcdetail::named_semaphore_wrapper m_sem;
+      typedef ipcdetail::posix_named_semaphore  impl_t;
    #else
-   interprocess_semaphore *semaphore() const
-   {  return static_cast<interprocess_semaphore*>(m_shmem.get_user_address()); }
-
-   ipcdetail::managed_open_or_create_impl<shared_memory_object> m_shmem;
-   typedef ipcdetail::named_creation_functor<interprocess_semaphore, int> construct_func_t;
+      typedef ipcdetail::shm_named_semaphore    impl_t;
    #endif
+   impl_t m_sem;
    /// @endcond
 };
 
 /// @cond
 
-#if defined(BOOST_INTERPROCESS_NAMED_SEMAPHORE_USES_POSIX_SEMAPHORES)
-
 inline named_semaphore::named_semaphore
    (create_only_t, const char *name, unsigned int initialCount, const permissions &perm)
-   :  m_sem(ipcdetail::DoCreate, name, initialCount, perm)
+   :  m_sem(create_only, name, initialCount, perm)
 {}
 
 inline named_semaphore::named_semaphore
    (open_or_create_t, const char *name, unsigned int initialCount, const permissions &perm)
-   :  m_sem(ipcdetail::DoOpenOrCreate, name, initialCount, perm)
+   :  m_sem(open_or_create, name, initialCount, perm)
 {}
 
 inline named_semaphore::named_semaphore(open_only_t, const char *name)
-   :  m_sem(ipcdetail::DoOpen, name, 1, permissions())
+   :  m_sem(open_only, name)
 {}
 
 inline named_semaphore::~named_semaphore()
@@ -163,73 +155,7 @@
 }
 
 inline bool named_semaphore::remove(const char *name)
-{  return ipcdetail::named_semaphore_wrapper::remove(name);   }
-
-#else
-
-inline named_semaphore::~named_semaphore()
-{}
-
-inline void named_semaphore::dont_close_on_destruction()
-{  ipcdetail::interprocess_tester::dont_close_on_destruction(m_shmem);  }
-
-inline named_semaphore::named_semaphore
-   (create_only_t, const char *name, unsigned int initialCount, const permissions &perm)
-   :  m_shmem  (create_only
-               ,name
-               ,sizeof(interprocess_semaphore) +
-                  ipcdetail::managed_open_or_create_impl<shared_memory_object>::
-                     ManagedOpenOrCreateUserOffset
-               ,read_write
-               ,0
-               ,construct_func_t(ipcdetail::DoCreate, initialCount)
-               ,perm)
-{}
-
-inline named_semaphore::named_semaphore
-   (open_or_create_t, const char *name, unsigned int initialCount, const permissions &perm)
-   :  m_shmem  (open_or_create
-               ,name
-               ,sizeof(interprocess_semaphore) +
-                  ipcdetail::managed_open_or_create_impl<shared_memory_object>::
-                     ManagedOpenOrCreateUserOffset
-               ,read_write
-               ,0
-               ,construct_func_t(ipcdetail::DoOpenOrCreate, initialCount)
-               ,perm)
-{}
-
-inline named_semaphore::named_semaphore
-   (open_only_t, const char *name)
-   :  m_shmem  (open_only
-               ,name
-               ,read_write
-               ,0
-               ,construct_func_t(ipcdetail::DoOpen, 0))
-{}
-
-inline void named_semaphore::post()
-{  semaphore()->post();   }
-
-inline void named_semaphore::wait()
-{  semaphore()->wait();   }
-
-inline bool named_semaphore::try_wait()
-{  return semaphore()->try_wait();   }
-
-inline bool named_semaphore::timed_wait(const boost::posix_time::ptime &abs_time)
-{
-   if(abs_time == boost::posix_time::pos_infin){
-      this->wait();
-      return true;
-   }
-   return semaphore()->timed_wait(abs_time);
-}
-
-inline bool named_semaphore::remove(const char *name)
-{  return shared_memory_object::remove(name); }
-
-#endif
+{  return impl_t::remove(name);   }
 
 /// @endcond
 
Deleted: branches/release/boost/interprocess/sync/posix/interprocess_barrier.hpp
==============================================================================
--- branches/release/boost/interprocess/sync/posix/interprocess_barrier.hpp	2011-12-26 12:42:22 EST (Mon, 26 Dec 2011)
+++ (empty file)
@@ -1,45 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Ion Gaztanaga 2006. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/interprocess for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-
-#include<boost/interprocess/exceptions.hpp>
-#include <boost/interprocess/detail/posix_time_types_wrk.hpp>
-#include <boost/assert.hpp>
-
-namespace boost {
-namespace interprocess {
-
-inline barrier::barrier(unsigned int count)
-{
-   if (count == 0)
-      throw std::invalid_argument("count cannot be zero.");
-   ipcdetail::barrierattr_wrapper barrier_attr;
-   ipcdetail::barrier_initializer barrier
-      (m_barrier, barrier_attr, static_cast<int>(count));
-   barrier.release();
-}
-
-inline barrier::~barrier()
-{
-   int res = pthread_barrier_destroy(&m_barrier);
-   BOOST_ASSERT(res  == 0);(void)res;
-}
-
-inline bool barrier::wait()
-{
-   int res = pthread_barrier_wait(&m_barrier);
-
-   if (res != PTHREAD_BARRIER_SERIAL_THREAD && res != 0){
-      throw interprocess_exception(res);
-   }
-   return res == PTHREAD_BARRIER_SERIAL_THREAD;
-}
-
-}  //namespace interprocess {
-}  //namespace boost {
Deleted: branches/release/boost/interprocess/sync/posix/interprocess_condition.hpp
==============================================================================
--- branches/release/boost/interprocess/sync/posix/interprocess_condition.hpp	2011-12-26 12:42:22 EST (Mon, 26 Dec 2011)
+++ (empty file)
@@ -1,82 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Ion Gaztanaga 2005-2009. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/interprocess for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-
-#include <boost/interprocess/sync/posix/ptime_to_timespec.hpp>
-#include <boost/interprocess/detail/posix_time_types_wrk.hpp>
-#include <boost/assert.hpp>
-
-namespace boost {
-
-namespace interprocess {
-
-inline interprocess_condition::interprocess_condition()
-{
-   int res;
-   pthread_condattr_t cond_attr;
-   res = pthread_condattr_init(&cond_attr);
-   if(res != 0){
-      throw interprocess_exception("pthread_condattr_init failed");
-   }
-   res = pthread_condattr_setpshared(&cond_attr, PTHREAD_PROCESS_SHARED);
-   if(res != 0){
-      pthread_condattr_destroy(&cond_attr);
-      throw interprocess_exception(res);
-   }
-   res = pthread_cond_init(&m_condition, &cond_attr);
-   pthread_condattr_destroy(&cond_attr);
-   if(res != 0){
-      throw interprocess_exception(res);
-   }
-}
-
-inline interprocess_condition::~interprocess_condition()
-{
-    int res = 0;
-    res = pthread_cond_destroy(&m_condition);
-    BOOST_ASSERT(res == 0);
-}
-
-inline void interprocess_condition::notify_one()
-{
-    int res = 0;
-    res = pthread_cond_signal(&m_condition);
-    BOOST_ASSERT(res == 0);
-}
-
-inline void interprocess_condition::notify_all()
-{
-    int res = 0;
-    res = pthread_cond_broadcast(&m_condition);
-    BOOST_ASSERT(res == 0);
-}
-
-inline void interprocess_condition::do_wait(interprocess_mutex &mut)
-{
-   pthread_mutex_t* pmutex = &mut.m_mut;
-   int res = 0;
-   res = pthread_cond_wait(&m_condition, pmutex);
-   BOOST_ASSERT(res == 0);
-}
-
-inline bool interprocess_condition::do_timed_wait
-   (const boost::posix_time::ptime &abs_time, interprocess_mutex &mut)
-{
-   timespec ts = ipcdetail::ptime_to_timespec(abs_time);
-   pthread_mutex_t* pmutex = &mut.m_mut;
-   int res = 0;
-   res = pthread_cond_timedwait(&m_condition, pmutex, &ts);
-   BOOST_ASSERT(res == 0 || res == ETIMEDOUT);
-
-   return res != ETIMEDOUT;
-}
-
-}  //namespace interprocess
-
-}  // namespace boost
Deleted: branches/release/boost/interprocess/sync/posix/interprocess_mutex.hpp
==============================================================================
--- branches/release/boost/interprocess/sync/posix/interprocess_mutex.hpp	2011-12-26 12:42:22 EST (Mon, 26 Dec 2011)
+++ (empty file)
@@ -1,122 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Ion Gaztanaga 2005-2009. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/interprocess for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-//
-// Parts of the pthread code come from Boost Threads code:
-//
-//////////////////////////////////////////////////////////////////////////////
-//
-// Copyright (C) 2001-2003
-// William E. Kempf
-//
-// Permission to use, copy, modify, distribute and sell this software
-// and its documentation for any purpose is hereby granted without fee,
-// provided that the above copyright notice appear in all copies and
-// that both that copyright notice and this permission notice appear
-// in supporting documentation.  William E. Kempf makes no representations
-// about the suitability of this software for any purpose.
-// It is provided "as is" without express or implied warranty.
-//////////////////////////////////////////////////////////////////////////////
-
-#include <boost/interprocess/exceptions.hpp>
-#include <boost/interprocess/sync/posix/ptime_to_timespec.hpp>
-#include <boost/interprocess/detail/posix_time_types_wrk.hpp>
-#include <boost/interprocess/exceptions.hpp>
-#ifndef BOOST_INTERPROCESS_POSIX_TIMEOUTS
-#  include <boost/interprocess/detail/os_thread_functions.hpp>
-#endif
-#include <boost/assert.hpp>
-
-namespace boost {
-namespace interprocess {
-
-inline interprocess_mutex::interprocess_mutex()
-{
-   ipcdetail::mutexattr_wrapper mut_attr;
-   ipcdetail::mutex_initializer mut(m_mut, mut_attr);
-   mut.release();
-}
-
-inline interprocess_mutex::~interprocess_mutex() 
-{
-   int res = pthread_mutex_destroy(&m_mut);
-   BOOST_ASSERT(res  == 0);(void)res;
-}
-
-inline void interprocess_mutex::lock()
-{
-#ifdef BOOST_INTERPROCESS_ENABLE_TIMEOUT_WHEN_LOCKING
-   boost::posix_time::ptime wait_time
-      = boost::posix_time::microsec_clock::universal_time()
-        + boost::posix_time::milliseconds(BOOST_INTERPROCESS_TIMEOUT_WHEN_LOCKING_DURATION_MS);
-   if (!timed_lock(wait_time))
-   {
-      throw interprocess_exception(timeout_when_locking_error, "Interprocess mutex timeout when locking. Possible deadlock: owner died without unlocking?");
-   }
-#else
-   if (pthread_mutex_lock(&m_mut) != 0) 
-      throw lock_exception();
-#endif
-}
-
-inline bool interprocess_mutex::try_lock()
-{
-   int res = pthread_mutex_trylock(&m_mut);
-   if (!(res == 0 || res == EBUSY))
-      throw lock_exception();
-   return res == 0;
-}
-
-inline bool interprocess_mutex::timed_lock(const boost::posix_time::ptime &abs_time)
-{
-   if(abs_time == boost::posix_time::pos_infin){
-      this->lock();
-      return true;
-   }
-   #ifdef BOOST_INTERPROCESS_POSIX_TIMEOUTS
-
-   timespec ts = ipcdetail::ptime_to_timespec(abs_time);
-   int res = pthread_mutex_timedlock(&m_mut, &ts);
-   if (res != 0 && res != ETIMEDOUT)
-      throw lock_exception();
-   return res == 0;
-
-   #else //BOOST_INTERPROCESS_POSIX_TIMEOUTS
-
-   //Obtain current count and target time
-   boost::posix_time::ptime now = microsec_clock::universal_time();
-
-   if(now >= abs_time) return false;
-
-   do{
-      if(this->try_lock()){
-         break;
-      }
-      now = microsec_clock::universal_time();
-
-      if(now >= abs_time){
-         return false;
-      }
-      // relinquish current time slice
-     ipcdetail::thread_yield();
-   }while (true);
-   return true;
-
-   #endif   //BOOST_INTERPROCESS_POSIX_TIMEOUTS
-}
-
-inline void interprocess_mutex::unlock()
-{
-   int res = 0;
-   res = pthread_mutex_unlock(&m_mut);
-   BOOST_ASSERT(res == 0);
-}
-
-}  //namespace interprocess {
-}  //namespace boost {
Deleted: branches/release/boost/interprocess/sync/posix/interprocess_semaphore.hpp
==============================================================================
--- branches/release/boost/interprocess/sync/posix/interprocess_semaphore.hpp	2011-12-26 12:42:22 EST (Mon, 26 Dec 2011)
+++ (empty file)
@@ -1,49 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Ion Gaztanaga 2005-2009. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/interprocess for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-
-#include <boost/interprocess/sync/posix/ptime_to_timespec.hpp>
-#include <boost/interprocess/detail/posix_time_types_wrk.hpp>
-
-namespace boost {
-
-namespace interprocess {
-
-inline interprocess_semaphore::~interprocess_semaphore()
-{}
-
-inline interprocess_semaphore::interprocess_semaphore(unsigned int initialCount)
-   :  m_sem(initialCount)
-{}
-
-inline void interprocess_semaphore::post()
-{  m_sem.post();   }
-
-inline void interprocess_semaphore::wait()
-{  m_sem.wait();   }
-
-inline bool interprocess_semaphore::try_wait()
-{  return m_sem.try_wait();   }
-
-inline bool interprocess_semaphore::timed_wait(const boost::posix_time::ptime &abs_time)
-{
-   if(abs_time == boost::posix_time::pos_infin){
-      this->wait();
-      return true;
-   }
-   return m_sem.timed_wait(abs_time);
-}
-/*
-inline int interprocess_semaphore::get_count() const
-{  return m_sem.get_count();  }
-*/
-}  //namespace interprocess {
-
-}  //namespace boost {
-
Modified: branches/release/boost/interprocess/sync/posix/pthread_helpers.hpp
==============================================================================
--- branches/release/boost/interprocess/sync/posix/pthread_helpers.hpp	(original)
+++ branches/release/boost/interprocess/sync/posix/pthread_helpers.hpp	2011-12-26 12:42:22 EST (Mon, 26 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
Modified: branches/release/boost/interprocess/sync/posix/ptime_to_timespec.hpp
==============================================================================
--- branches/release/boost/interprocess/sync/posix/ptime_to_timespec.hpp	(original)
+++ branches/release/boost/interprocess/sync/posix/ptime_to_timespec.hpp	2011-12-26 12:42:22 EST (Mon, 26 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
Modified: branches/release/boost/interprocess/sync/posix/semaphore_wrapper.hpp
==============================================================================
--- branches/release/boost/interprocess/sync/posix/semaphore_wrapper.hpp	(original)
+++ branches/release/boost/interprocess/sync/posix/semaphore_wrapper.hpp	2011-12-26 12:42:22 EST (Mon, 26 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
@@ -17,8 +17,12 @@
 #include <boost/interprocess/detail/os_file_functions.hpp>
 #include <boost/interprocess/detail/tmp_dir_helpers.hpp>
 #include <boost/interprocess/permissions.hpp>
-#include <string>
-#include <semaphore.h>
+
+#include <fcntl.h>      //O_CREAT, O_*... 
+#include <unistd.h>     //close
+#include <string>       //std::string
+#include <semaphore.h>  //sem_* family, SEM_VALUE_MAX
+#include <sys/stat.h>   //mode_t, S_IRWXG, S_IRWXO, S_IRWXU,
 #include <boost/assert.hpp>
 
 #ifdef SEM_FAILED
@@ -35,49 +39,59 @@
 
 namespace boost {
 namespace interprocess {
-
-/// @cond
-namespace ipcdetail{ class interprocess_tester; }
-/// @endcond
-
 namespace ipcdetail {
 
 inline bool semaphore_open
-   (sem_t *&handle, ipcdetail::create_enum_t type, const char *origname, 
-    unsigned int count, const permissions &perm = permissions())
+   (sem_t *&handle, create_enum_t type, const char *origname, 
+    unsigned int count = 0, const permissions &perm = permissions())
 {
    std::string name;
    #ifndef BOOST_INTERPROCESS_FILESYSTEM_BASED_POSIX_SEMAPHORES
-   ipcdetail::add_leading_slash(origname, name);
+   add_leading_slash(origname, name);
    #else
-   ipcdetail::create_tmp_and_clean_old_and_get_filename(origname, name);
+   create_tmp_and_clean_old_and_get_filename(origname, name);
    #endif
 
    //Create new mapping
    int oflag = 0;
    switch(type){
-      case ipcdetail::DoOpen:
+      case DoOpen:
+      {
          //No addition
+         handle = ::sem_open(name.c_str(), oflag);
+      }
       break;
-      case ipcdetail::DoCreate:
-         oflag |= (O_CREAT | O_EXCL);
-      break;
-      case ipcdetail::DoOpenOrCreate:
-         oflag |= O_CREAT;
+      case DoOpenOrCreate:
+      case DoCreate:
+      {
+         while(1){
+            oflag = (O_CREAT | O_EXCL);
+            handle = ::sem_open(name.c_str(), oflag, perm.get_permissions(), count);
+            if(handle != BOOST_INTERPROCESS_POSIX_SEM_FAILED){
+               //We can't change semaphore permissions!
+               //::fchmod(handle, perm.get_permissions());
+               break;
+            }
+            else if(errno == EEXIST && type == DoOpenOrCreate){
+               oflag = 0;
+               if( (handle = ::sem_open(name.c_str(), oflag)) != BOOST_INTERPROCESS_POSIX_SEM_FAILED
+                   || (errno != ENOENT) ){
+                  break;
+               }
+            }
+            else{
+               break;
+            }
+         }
+      }
       break;
       default:
-         {
-            error_info err = other_error;
-            throw interprocess_exception(err);
-         }
+      {
+         error_info err(other_error);
+         throw interprocess_exception(err);
+      }
    }
 
-   //Open file using POSIX API
-   if(oflag & O_CREAT)
-      handle = sem_open(name.c_str(), oflag, perm.get_permissions(), count);
-   else
-      handle = sem_open(name.c_str(), oflag);
-
    //Check for error
    if(handle == BOOST_INTERPROCESS_POSIX_SEM_FAILED){
       throw interprocess_exception(error_info(errno));
@@ -99,9 +113,9 @@
    try{
       std::string sem_str;
       #ifndef BOOST_INTERPROCESS_FILESYSTEM_BASED_POSIX_SEMAPHORES
-      ipcdetail::add_leading_slash(semname, sem_str);
+      add_leading_slash(semname, sem_str);
       #else
-      ipcdetail::tmp_filename(semname, sem_str);
+      tmp_filename(semname, sem_str);
       #endif
       return 0 == sem_unlink(sem_str.c_str());
    }
@@ -159,8 +173,12 @@
 
 inline bool semaphore_timed_wait(sem_t *handle, const boost::posix_time::ptime &abs_time)
 {
+   if(abs_time == boost::posix_time::pos_infin){
+      semaphore_wait(handle);
+      return true;
+   }
    #ifdef BOOST_INTERPROCESS_POSIX_TIMEOUTS
-   timespec tspec = ipcdetail::ptime_to_timespec(abs_time);
+   timespec tspec = ptime_to_timespec(abs_time);
    for (;;){
       int res = sem_timedwait(handle, &tspec);
       if(res == 0)
@@ -177,89 +195,17 @@
    return false;
    #else //#ifdef BOOST_INTERPROCESS_POSIX_TIMEOUTS
    boost::posix_time::ptime now;
-   while((now = microsec_clock::universal_time()) < abs_time){
+   do{
       if(semaphore_try_wait(handle))
          return true;
       thread_yield();
-   }
+   }while((now = microsec_clock::universal_time()) < abs_time);
    return false;
    #endif   //#ifdef BOOST_INTERPROCESS_POSIX_TIMEOUTS
 }
 
-
-class named_semaphore_wrapper
-{
-   named_semaphore_wrapper();
-   named_semaphore_wrapper(const named_semaphore_wrapper&);
-   named_semaphore_wrapper &operator= (const named_semaphore_wrapper &);
-
-   public:
-   named_semaphore_wrapper
-      (ipcdetail::create_enum_t type, const char *name, unsigned int count, const permissions &perm = permissions())
-   {  semaphore_open(mp_sem, type, name, count, perm);   }
-
-   ~named_semaphore_wrapper()
-   {
-      if(mp_sem != BOOST_INTERPROCESS_POSIX_SEM_FAILED)
-         semaphore_close(mp_sem);
-   }
-
-   void post()
-   {  semaphore_post(mp_sem); }
-
-   void wait()
-   {  semaphore_wait(mp_sem); }
-
-   bool try_wait()
-   {  return semaphore_try_wait(mp_sem); }
-
-   bool timed_wait(const boost::posix_time::ptime &abs_time)
-   {  return semaphore_timed_wait(mp_sem, abs_time); }
-
-   static bool remove(const char *name)
-   {  return semaphore_unlink(name);   }
-
-   private:
-   friend class ipcdetail::interprocess_tester;
-   void dont_close_on_destruction()
-   {  mp_sem = BOOST_INTERPROCESS_POSIX_SEM_FAILED; }
-
-   sem_t      *mp_sem;
-};
-
-class semaphore_wrapper
-{
-   semaphore_wrapper();
-   semaphore_wrapper(const semaphore_wrapper&);
-   semaphore_wrapper &operator= (const semaphore_wrapper &);
-
-   public:
-   semaphore_wrapper(unsigned int initialCount)
-   {  semaphore_init(&m_sem, initialCount);  }
-
-   ~semaphore_wrapper()
-   {  semaphore_destroy(&m_sem);  }
-
-   void post()
-   {  semaphore_post(&m_sem); }
-
-   void wait()
-   {  semaphore_wait(&m_sem); }
-
-   bool try_wait()
-   {  return semaphore_try_wait(&m_sem); }
-
-   bool timed_wait(const boost::posix_time::ptime &abs_time)
-   {  return semaphore_timed_wait(&m_sem, abs_time); }
-
-   private:
-   sem_t       m_sem;
-};
-
 }  //namespace ipcdetail {
 }  //namespace interprocess {
 }  //namespace boost {
 
-#undef BOOST_INTERPROCESS_POSIX_SEM_FAILED
-
 #endif   //#ifndef BOOST_INTERPROCESS_POSIX_SEMAPHORE_WRAPPER_HPP
Modified: branches/release/boost/interprocess/sync/scoped_lock.hpp
==============================================================================
--- branches/release/boost/interprocess/sync/scoped_lock.hpp	(original)
+++ branches/release/boost/interprocess/sync/scoped_lock.hpp	2011-12-26 12:42:22 EST (Mon, 26 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
@@ -27,7 +27,7 @@
 #include <boost/interprocess/exceptions.hpp>
 #include <boost/interprocess/detail/mpl.hpp>
 #include <boost/interprocess/detail/type_traits.hpp>
-#include <boost/interprocess/detail/move.hpp>
+#include <boost/move/move.hpp>
 #include <boost/interprocess/detail/posix_time_types_wrk.hpp>
 
 //!\file
@@ -120,7 +120,7 @@
    //!   to thisscoped_lock with no blocking. If the scop scoped_lock does not
    //!   own the mutex, then neither will this scoped_lock. Only a moved
    //!   scoped_lock's will match this signature. An non-moved scoped_lock
-   //!   can be moved with the expression: "boost::interprocess::move(lock);". This
+   //!   can be moved with the expression: "boost::move(lock);". This
    //!   constructor does not alter the state of the mutex, only potentially
    //!   who owns it.
    scoped_lock(BOOST_RV_REF(scoped_lock) scop)
@@ -136,7 +136,7 @@
    //!   unlocking upgr. If upgr is unlocked, then this scoped_lock will be
    //!   unlocked as well. Only a moved upgradable_lock's will match this
    //!   signature. An non-moved upgradable_lock can be moved with
-   //!   the expression: "boost::interprocess::move(lock);" This constructor may block if
+   //!   the expression: "boost::move(lock);" This constructor may block if
    //!   other threads hold a sharable_lock on this mutex (sharable_lock's can
    //!   share ownership with an upgradable_lock).
    template<class T>
Modified: branches/release/boost/interprocess/sync/upgradable_lock.hpp
==============================================================================
--- branches/release/boost/interprocess/sync/upgradable_lock.hpp	(original)
+++ branches/release/boost/interprocess/sync/upgradable_lock.hpp	2011-12-26 12:42:22 EST (Mon, 26 Dec 2011)
@@ -1,6 +1,6 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Ion Gaztanaga 2005-2009. Distributed under the Boost
+// (C) Copyright Ion Gaztanaga 2005-2011. Distributed under the Boost
 // Software License, Version 1.0. (See accompanying file
 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 //
@@ -28,7 +28,7 @@
 #include <boost/interprocess/detail/type_traits.hpp>
 
 #include <boost/interprocess/exceptions.hpp>
-#include <boost/interprocess/detail/move.hpp>
+#include <boost/move/move.hpp>
 #include <boost/interprocess/detail/posix_time_types_wrk.hpp>
 
 //!\file
@@ -117,7 +117,7 @@
    //!   while unlocking upgr. If upgr is unlocked, then this upgradable_lock will
    //!   be unlocked as well. Only a moved upgradable_lock's will match this
    //!   signature. An non-moved upgradable_lock can be moved with the
-   //!   expression: "boost::interprocess::move(lock);". This constructor does not alter the
+   //!   expression: "boost::move(lock);". This constructor does not alter the
    //!   state of the mutex, only potentially who owns it.
    upgradable_lock(BOOST_RV_REF(upgradable_lock<mutex_type>) upgr)
       : mp_mutex(0), m_locked(upgr.owns())
@@ -131,7 +131,7 @@
    //!   to an upgradable-ownership of this upgradable_lock.
    //!   Only a moved sharable_lock's will match this
    //!   signature. An non-moved sharable_lock can be moved with the
-   //!   expression: "boost::interprocess::move(lock);".
+   //!   expression: "boost::move(lock);".
    template<class T>
    upgradable_lock(BOOST_RV_REF(scoped_lock<T>) scop
                   , typename ipcdetail::enable_if< ipcdetail::is_same<T, UpgradableMutex> >::type * = 0)
Modified: branches/release/boost/interprocess/sync/xsi/xsi_named_mutex.hpp
==============================================================================
--- branches/release/boost/interprocess/sync/xsi/xsi_named_mutex.hpp	(original)
+++ branches/release/boost/interprocess/sync/xsi/xsi_named_mutex.hpp	2011-12-26 12:42:22 EST (Mon, 26 Dec 2011)
@@ -18,7 +18,7 @@
 #error "This header can't be used in Windows operating systems"
 #endif
 
-#include <boost/interprocess/detail/move.hpp>
+#include <boost/move/move.hpp>
 #include <boost/interprocess/creation_tags.hpp>
 #include <boost/interprocess/exceptions.hpp>
 #include <boost/interprocess/detail/utilities.hpp>
@@ -73,7 +73,7 @@
    //!Does not throw
    xsi_named_mutex &operator=(BOOST_RV_REF(xsi_named_mutex) moved)
    {  
-      xsi_named_mutex tmp(boost::interprocess::move(moved));
+      xsi_named_mutex tmp(boost::move(moved));
       this->swap(tmp);
       return *this;  
    }