Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r64330 - in trunk/libs/interprocess: doc example proj proj/vc7ide test
From: igaztanaga_at_[hidden]
Date: 2010-07-25 11:37:27


Author: igaztanaga
Date: 2010-07-25 11:37:24 EDT (Sun, 25 Jul 2010)
New Revision: 64330
URL: http://svn.boost.org/trac/boost/changeset/64330

Log:
Changes for Boost 1.45
Removed:
   trunk/libs/interprocess/proj/vc7ide/doc_windows_shared_memory2.vcproj
Text files modified:
   trunk/libs/interprocess/doc/interprocess.qbk | 49 ++++++++++++++
   trunk/libs/interprocess/example/comp_doc_anonymous_conditionA.cpp | 33 +++++++++
   trunk/libs/interprocess/proj/to-do.txt | 137 +++++++++++++++++++++++++++++++++++++++
   trunk/libs/interprocess/proj/vc7ide/Interprocess.sln | 40 +++++++++--
   trunk/libs/interprocess/proj/vc7ide/interprocesslib.vcproj | 24 +++---
   trunk/libs/interprocess/test/allocexcept_test.cpp | 3
   trunk/libs/interprocess/test/boost_interprocess_check.hpp | 8 +-
   trunk/libs/interprocess/test/file_lock_test.cpp | 22 ++++-
   trunk/libs/interprocess/test/file_mapping_test.cpp | 22 ++++--
   trunk/libs/interprocess/test/intermodule_singleton_test.cpp | 8 +
   trunk/libs/interprocess/test/managed_mapped_file_test.cpp | 47 +++++++-----
   trunk/libs/interprocess/test/mapped_file_test.cpp | 25 ++++--
   trunk/libs/interprocess/test/mutex_test.cpp | 3
   trunk/libs/interprocess/test/mutex_test_template.hpp | 2
   trunk/libs/interprocess/test/named_creation_template.hpp | 2
   trunk/libs/interprocess/test/print_container.hpp | 6
   trunk/libs/interprocess/test/shared_memory_mapping_test.cpp | 3
   trunk/libs/interprocess/test/shared_memory_test.cpp | 8 +-
   trunk/libs/interprocess/test/vector_test.hpp | 5 +
   trunk/libs/interprocess/test/windows_shared_memory_test.cpp | 6
   20 files changed, 367 insertions(+), 86 deletions(-)

Modified: trunk/libs/interprocess/doc/interprocess.qbk
==============================================================================
--- trunk/libs/interprocess/doc/interprocess.qbk (original)
+++ trunk/libs/interprocess/doc/interprocess.qbk 2010-07-25 11:37:24 EDT (Sun, 25 Jul 2010)
@@ -609,6 +609,16 @@
 the user must somehow transmit the size of the segment to processes opening the
 segment.
 
+Sharing memory between services and user applications is also different. To share memory
+between services and user applications the name of the shared memory must start with the
+global namespace prefix `"Global\"`. This global namespace enables processes on multiple
+client sessions to communicate with a service application. The server component can create
+the shared memory in the global namespace. Then a client session can use the "Global\" prefix
+to open that memory.
+
+The creation of a shared memory object in the global namespace from a session other than
+session zero is a privileged operation.
+
 Let's repeat the same example presented for the portable shared memory object:
 A server process creates a
 shared memory object, maps it and initializes all the bytes to a value. After that,
@@ -757,7 +767,8 @@
 not updated immediately, since that would hurt performance (writing to disk
 is several times slower than writing to memory). If the user wants to make sure
 that file's contents have been updated, it can flush a range from the view to disk.
-When the function returns, the data should have been written to disk:
+When the function returns, the flushing process has startd but there is not guarantee that
+all data has been written to disk:
 
 [c++]
 
@@ -3128,6 +3139,10 @@
 windows shared memory is detached from the memory (or ends/crashes) the memory is
 destroyed. So there is no persistence support for windows shared memory.
 
+To communicate between system services and user applications using `managed_windows_shared_memory`,
+please read the explanations given in chapter
+[interprocess.sharedmemorybetweenprocesses.sharedmemory.windows_shared_memory Native windows shared memory]
+
 [endsect]
 
 For more information about managed shared memory capabilities, see
@@ -5078,6 +5093,13 @@
 
 [endsect]
 
+Programmers can place [*Boost.CircularBuffer] containers in sharecd memory provided
+they disable debugging facilities with defines `BOOST_CB_DISABLE_DEBUG` or the more
+general `NDEBUG`. The reason is that those debugging facilities are only compatible
+with raw pointers.
+
+[endsect]
+
 [endsect]
 
 [section:memory_algorithms Memory allocation algorithms]
@@ -6530,6 +6552,31 @@
 
 [section:release_notes Release Notes]
 
+[section:release_notes_boost_1_45_00 Boost 1.45 Release]
+
+* Fixed bugs
+ [@https://svn.boost.org/trac/boost/ticket/3439 #3439],
+ [@https://svn.boost.org/trac/boost/ticket/3448 #3448],
+ [@https://svn.boost.org/trac/boost/ticket/3582 #3582],
+ [@https://svn.boost.org/trac/boost/ticket/3682 #3682],
+ [@https://svn.boost.org/trac/boost/ticket/3829 #3829],
+ [@https://svn.boost.org/trac/boost/ticket/3846 #3846],
+ [@https://svn.boost.org/trac/boost/ticket/3947 #3947],
+ [@https://svn.boost.org/trac/boost/ticket/3950 #3950],
+ [@https://svn.boost.org/trac/boost/ticket/3951 #3951],
+ [@https://svn.boost.org/trac/boost/ticket/3985 #3985],
+ [@https://svn.boost.org/trac/boost/ticket/4010 #4010],
+ [@https://svn.boost.org/trac/boost/ticket/4019 #4019],
+ [@https://svn.boost.org/trac/boost/ticket/4039 #4039],
+ [@https://svn.boost.org/trac/boost/ticket/4218 #4218],
+ [@https://svn.boost.org/trac/boost/ticket/4230 #4230],
+ [@https://svn.boost.org/trac/boost/ticket/4230 #4352],
+
+* `mapped_region::flush` initiates disk flushing but does not guarantee it's completed
+ when returns, since it is not portable.
+
+[endsect]
+
 [section:release_notes_boost_1_41_00 Boost 1.41 Release]
 
 * Support for POSIX shared memory in Mac OS.

Modified: trunk/libs/interprocess/example/comp_doc_anonymous_conditionA.cpp
==============================================================================
--- trunk/libs/interprocess/example/comp_doc_anonymous_conditionA.cpp (original)
+++ trunk/libs/interprocess/example/comp_doc_anonymous_conditionA.cpp 2010-07-25 11:37:24 EDT (Sun, 25 Jul 2010)
@@ -77,4 +77,37 @@
    return 0;
 }
 //]
+
+/*
 #include <boost/interprocess/detail/config_end.hpp>
+
+#include <windows.h>
+#include <boost/interprocess/detail/win32_api.hpp>
+
+#include <string>
+#include <iostream>
+
+int main( int argc, char* argv[] )
+{
+ std::wstring strTmp;
+
+ unsigned long a = timeGetTime();
+ if ( false != boost::interprocess::winapi::get_last_bootup_time( strTmp ) )
+ {
+ unsigned long b = timeGetTime();
+ std::wcout << "Last boot up time: " << strTmp << " t:" << b-a << std::endl;
+
+ std::vector<unsigned char> v;
+ a = timeGetTime();
+ boost::interprocess::winapi::get_registry_value("SYSTEM\\CurrentControlSet\\Control\\Windows", "ShutdownTime", v);
+ b = timeGetTime();
+ std::wcout << "shutdowntime get: " << b-a << std::endl;
+ }
+ else
+ {
+ std::cout << "Error: Can't retrieve last boot up time!" << std::endl;
+ }
+
+ return 0;
+}
+*/
\ No newline at end of file

Modified: trunk/libs/interprocess/proj/to-do.txt
==============================================================================
--- trunk/libs/interprocess/proj/to-do.txt (original)
+++ trunk/libs/interprocess/proj/to-do.txt 2010-07-25 11:37:24 EDT (Sun, 25 Jul 2010)
@@ -61,4 +61,139 @@
 
 -> MacOS shm_open is non-conformant. Is there a way to know the size of a shared memory object?
 
--> swap() of multiallocaiton iterator is wrong. Try to reimplement it with slist
\ No newline at end of file
+-> swap() of multiallocaiton iterator is wrong. Try to reimplement it with slist
+
+-> Could the mapped_file constructor allow a wchar_t filename on Windows?
+ Or some cross-platform way to get Unicode support?
+
+-> map::node_ptr p = m.create_node(my_special_cheap_key_value, mv1, mv2);
+//We would need to unconst-cast...
+const_cast<Key&>(p->first) = modify( p->second );
+m.insert( boost::move(p) );
+
+-> I found some bug in the interprocess library. I use
+ boost::interprocess::managed_mapped_file class and
+ managed_mapped_file::shrink_to_fit() method to decrease the size of file
+ on the disk. It works good but the thread hang up on shrink_to_fit() call
+ if the file exists already and it's size is zero. It makes me check the
+ file existance and it's size before shrink_to_fit() call.
+ Thank you!
+
+-> Ticket URL: <https://svn.boost.org/trac/boost/ticket/3375>
+
+->Robust mutex emulation:
+
+Two new fields:
+ - owner
+ - state
+
+Use intermodule singleton to store the lock file name
+
+LOCK
+ if (broken_id){
+ throw exception;
+ }
+
+ lock_own_unique_file();
+
+ while(1){
+ if (try_lock_mtx){
+ write unique_id
+ }
+ else{
+ sleep();
+ ++tries;
+ if(tries > 100)
+ if(!robust_check()){
+ tries = 0;
+ }
+ else{
+ break;
+ }
+ }
+ }
+ }
+
+
+UNLOCK
+ if (fixing_mode){
+ write_broken_id
+ }
+ else{
+ write invalid_id
+ }
+
+ unlock_mtx
+
+ROBUST_CHECK
+
+ if(check_if_owner_dead_and_take_ownership_atomically()){
+ return false;
+ }
+ write fixing_id
+
+CHECK_IF_OWNER_DEAD_AND_TAKE_OWNERSHIP_ATOMICALLY
+
+ do{
+ old_owner = read_owner_atomically()
+ if(check_owner_unique_resource_is_dead(old_owner){
+ return true;
+ }
+ }while(cas(old_owner, cur_owner) == old_owner);
+ return false;
+
+CHECK_OWNER_UNIQUE_RESOURCE_IS_DEAD(owner)
+
+ file = file_to_owner(owner);
+ if(file_exists(file)){
+ if(try_lock(file)){
+ write_owner_atomically();
+ remove(file);
+ unlock(file)
+ return true;
+ }
+ }
+ return false;
+
+
+LOCK_OWN_UNIQUE_FILE
+class MyRobustMutexLockFile
+{
+ int fd;
+};
+
+MyRobustMutexLockFile()
+{
+ //loop create_and_lock because another process
+ //can lock and erase it
+
+ //better create, lock and rename?
+ fd = create_file(lockfilename);
+ while(1){
+ lock_file(fd);
+ int fd2 = create_exclusive(lockfilename);
+ if(fd2){
+ close(fd);
+ fd = fd2;
+ continue;
+ }
+ else if(already_exist_error){ //must already exist
+ break;
+ }
+ else{
+ close(fd);
+ throw exception;
+ }
+ }
+}
+
+~MyRobustMutexLockFile()
+{
+ close(fd);
+ //No race condition because
+ //if any other thread tries to create the file
+ //the shm has a lock so constructor/destructor is serialized
+ unlink(lockfilename)
+}
+
+detail::intermodule_singleton<MyRobustMutexLockFile>::get();

Modified: trunk/libs/interprocess/proj/vc7ide/Interprocess.sln
==============================================================================
--- trunk/libs/interprocess/proj/vc7ide/Interprocess.sln (original)
+++ trunk/libs/interprocess/proj/vc7ide/Interprocess.sln 2010-07-25 11:37:24 EDT (Sun, 25 Jul 2010)
@@ -199,10 +199,6 @@
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "recursive_mutex_test", "recursive_mutex_test.vcproj", "{83581CCE-487E-3292-A4E7-BA07926D3A14}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "semaphore_test", "semaphore_test.vcproj", "{5CE28C83-48FE-1676-4FA7-B50D3A76A013}"
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
@@ -435,6 +431,22 @@
         ProjectSection(ProjectDependencies) = postProject
         EndProjectSection
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "intermodule_singleton_test", "intermodule_singleton_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792608}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "robust_recursive_emulation_test", "robust_recursive_emulation_test.vcproj", "{58CCE183-4AFE-C4F5-6292-B25062C3A898}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "robust_emulation_test", "robust_emulation_test.vcproj", "{58CCE183-4AFE-6092-C4F5-BA0D3A692628}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "recursive_mutex_test", "recursive_mutex_test.vcproj", "{83581CCE-487E-3292-A4E7-BA07926D3A14}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
 Global
         GlobalSection(SolutionConfiguration) = preSolution
                 Debug = Debug
@@ -641,10 +653,6 @@
                 {0000058C-0000-0000-0000-000000000021}.Debug.Build.0 = Debug|Win32
                 {0000058C-0000-0000-0000-000000000021}.Release.ActiveCfg = Release|Win32
                 {0000058C-0000-0000-0000-000000000021}.Release.Build.0 = Release|Win32
- {83581CCE-487E-3292-A4E7-BA07926D3A14}.Debug.ActiveCfg = Debug|Win32
- {83581CCE-487E-3292-A4E7-BA07926D3A14}.Debug.Build.0 = Debug|Win32
- {83581CCE-487E-3292-A4E7-BA07926D3A14}.Release.ActiveCfg = Release|Win32
- {83581CCE-487E-3292-A4E7-BA07926D3A14}.Release.Build.0 = Release|Win32
                 {5CE28C83-48FE-1676-4FA7-B50D3A76A013}.Debug.ActiveCfg = Debug|Win32
                 {5CE28C83-48FE-1676-4FA7-B50D3A76A013}.Debug.Build.0 = Debug|Win32
                 {5CE28C83-48FE-1676-4FA7-B50D3A76A013}.Release.ActiveCfg = Release|Win32
@@ -877,6 +885,22 @@
                 {58CC2563-6092-48FE-FAF7-BA046A792658}.Debug.Build.0 = Debug|Win32
                 {58CC2563-6092-48FE-FAF7-BA046A792658}.Release.ActiveCfg = Release|Win32
                 {58CC2563-6092-48FE-FAF7-BA046A792658}.Release.Build.0 = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Debug.Build.0 = Debug|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Release.ActiveCfg = Release|Win32
+ {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Release.Build.0 = Release|Win32
+ {58CCE183-4AFE-C4F5-6292-B25062C3A898}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-4AFE-C4F5-6292-B25062C3A898}.Debug.Build.0 = Debug|Win32
+ {58CCE183-4AFE-C4F5-6292-B25062C3A898}.Release.ActiveCfg = Release|Win32
+ {58CCE183-4AFE-C4F5-6292-B25062C3A898}.Release.Build.0 = Release|Win32
+ {58CCE183-4AFE-6092-C4F5-BA0D3A692628}.Debug.ActiveCfg = Debug|Win32
+ {58CCE183-4AFE-6092-C4F5-BA0D3A692628}.Debug.Build.0 = Debug|Win32
+ {58CCE183-4AFE-6092-C4F5-BA0D3A692628}.Release.ActiveCfg = Release|Win32
+ {58CCE183-4AFE-6092-C4F5-BA0D3A692628}.Release.Build.0 = Release|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A14}.Debug.ActiveCfg = Debug|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A14}.Debug.Build.0 = Debug|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A14}.Release.ActiveCfg = Release|Win32
+ {83581CCE-487E-3292-A4E7-BA07926D3A14}.Release.Build.0 = Release|Win32
         EndGlobalSection
         GlobalSection(ExtensibilityGlobals) = postSolution
         EndGlobalSection

Deleted: trunk/libs/interprocess/proj/vc7ide/doc_windows_shared_memory2.vcproj
==============================================================================
--- trunk/libs/interprocess/proj/vc7ide/doc_windows_shared_memory2.vcproj 2010-07-25 11:37:24 EDT (Sun, 25 Jul 2010)
+++ (empty file)
@@ -1,133 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="7.10"
- Name="doc_windows_shared_memory2"
- ProjectGUID="{5E1D6C83-31DE-4F6F-6132-87A9FB663041}"
- Keyword="Win32Proj">
- <Platforms>
- <Platform
- Name="Win32"/>
- </Platforms>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="../../Bin/Win32/Debug"
- IntermediateDirectory="Debug/doc_windows_shared_memory2"
- ConfigurationType="1"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
- MinimalRebuild="TRUE"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- TreatWChar_tAsBuiltInType="TRUE"
- ForceConformanceInForLoopScope="FALSE"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="3"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/doc_windows_shared_memory2_d.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="../../../../stage/lib"
- GenerateDebugInformation="TRUE"
- ProgramDatabaseFile="$(OutDir)/doc_windows_shared_memoryB.pdb"
- SubSystem="1"
- TargetMachine="1"
- FixedBaseAddress="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="../../Bin/Win32/Release"
- IntermediateDirectory="Release/doc_windows_shared_memory2"
- ConfigurationType="1"
- CharacterSet="2">
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="../../../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
- RuntimeLibrary="2"
- TreatWChar_tAsBuiltInType="TRUE"
- ForceConformanceInForLoopScope="FALSE"
- UsePrecompiledHeader="0"
- WarningLevel="4"
- Detect64BitPortabilityProblems="TRUE"
- DebugInformationFormat="0"/>
- <Tool
- Name="VCCustomBuildTool"/>
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="winmm.lib"
- OutputFile="$(OutDir)/doc_windows_shared_memoryB.exe"
- LinkIncremental="1"
- AdditionalLibraryDirectories="../../../../stage/lib"
- GenerateDebugInformation="TRUE"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- TargetMachine="1"/>
- <Tool
- Name="VCMIDLTool"/>
- <Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
- <Tool
- Name="VCPreLinkEventTool"/>
- <Tool
- Name="VCResourceCompilerTool"/>
- <Tool
- Name="VCWebServiceProxyGeneratorTool"/>
- <Tool
- Name="VCXMLDataGeneratorTool"/>
- <Tool
- Name="VCWebDeploymentTool"/>
- <Tool
- Name="VCManagedWrapperGeneratorTool"/>
- <Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{437F71DF-CA9B-6637-0366-3E52D735BAFF}">
- <File
- RelativePath="..\..\example\comp_doc_windows_shared_memoryB.cpp">
- </File>
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>

Modified: trunk/libs/interprocess/proj/vc7ide/interprocesslib.vcproj
==============================================================================
--- trunk/libs/interprocess/proj/vc7ide/interprocesslib.vcproj (original)
+++ trunk/libs/interprocess/proj/vc7ide/interprocesslib.vcproj 2010-07-25 11:37:24 EDT (Sun, 25 Jul 2010)
@@ -265,22 +265,22 @@
                                 Name="emulation"
                                 Filter="">
                                 <File
- RelativePath="..\..\..\..\boost\interprocess\sync\emulation\interprocess_barrier.hpp">
+ RelativePath="..\..\..\..\boost\interprocess\sync\emulation\barrier.hpp">
                                 </File>
                                 <File
- RelativePath="..\..\..\..\boost\interprocess\sync\emulation\interprocess_condition.hpp">
+ RelativePath="..\..\..\..\boost\interprocess\sync\emulation\condition.hpp">
                                 </File>
                                 <File
- RelativePath="..\..\..\..\boost\interprocess\sync\emulation\interprocess_mutex.hpp">
+ RelativePath="..\..\..\..\boost\interprocess\sync\emulation\mutex.hpp">
                                 </File>
                                 <File
- RelativePath="..\..\..\..\boost\interprocess\sync\emulation\interprocess_recursive_mutex.hpp">
+ RelativePath="..\..\..\..\boost\interprocess\sync\emulation\named_creation_functor.hpp">
                                 </File>
                                 <File
- RelativePath="..\..\..\..\boost\interprocess\sync\emulation\interprocess_semaphore.hpp">
+ RelativePath="..\..\..\..\boost\interprocess\sync\emulation\recursive_mutex.hpp">
                                 </File>
                                 <File
- RelativePath="..\..\..\..\boost\interprocess\sync\emulation\named_creation_functor.hpp">
+ RelativePath="..\..\..\..\boost\interprocess\sync\emulation\semaphore.hpp">
                                 </File>
                         </Filter>
                 </Filter>
@@ -345,6 +345,9 @@
                                 RelativePath="..\..\..\..\boost\interprocess\mapped_region.hpp">
                         </File>
                         <File
+ RelativePath="..\..\..\..\boost\interprocess\permissions.hpp">
+ </File>
+ <File
                                 RelativePath="..\..\..\..\boost\interprocess\segment_manager.hpp">
                         </File>
                         <File
@@ -430,6 +433,9 @@
                                 RelativePath="..\..\..\..\boost\interprocess\detail\ptime_wrk.hpp">
                         </File>
                         <File
+ RelativePath="..\..\..\..\boost\interprocess\detail\robust_emulation.hpp">
+ </File>
+ <File
                                 RelativePath="..\..\..\..\boost\interprocess\detail\segment_manager_helper.hpp">
                         </File>
                         <File
@@ -535,15 +541,9 @@
                                 RelativePath="..\..\test\expand_bwd_test_template.hpp">
                         </File>
                         <File
- RelativePath="..\..\test\get_compiler_name.hpp">
- </File>
- <File
                                 RelativePath="..\..\test\get_process_id_name.hpp">
                         </File>
                         <File
- RelativePath="..\..\test\itestvalue.hpp">
- </File>
- <File
                                 RelativePath="..\..\test\list_test.hpp">
                         </File>
                         <File

Modified: trunk/libs/interprocess/test/allocexcept_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/allocexcept_test.cpp (original)
+++ trunk/libs/interprocess/test/allocexcept_test.cpp 2010-07-25 11:37:24 EDT (Sun, 25 Jul 2010)
@@ -71,8 +71,9 @@
       //Fill vector at the beginning until there is no more memory
       MyVect myvec(myallocator);
       int i;
+ InstanceCounter ic;
       for(i = 0; true; ++i){
- myvec.insert(myvec.begin(), i, InstanceCounter());
+ myvec.insert(myvec.begin(), i, ic);
       }
    }
    catch(boost::interprocess::bad_alloc &){

Modified: trunk/libs/interprocess/test/boost_interprocess_check.hpp
==============================================================================
--- trunk/libs/interprocess/test/boost_interprocess_check.hpp (original)
+++ trunk/libs/interprocess/test/boost_interprocess_check.hpp 2010-07-25 11:37:24 EDT (Sun, 25 Jul 2010)
@@ -8,8 +8,8 @@
 //
 //////////////////////////////////////////////////////////////////////////////
 
-#ifndef BOOST_INTERPROCESS_TEST_HEADER
-#define BOOST_INTERPROCESS_TEST_HEADER
+#ifndef BOOST_INTERPROCESS_TEST_CHECK_HEADER
+#define BOOST_INTERPROCESS_TEST_CHECK_HEADER
 
 #include <boost/interprocess/detail/config_begin.hpp>
 #include <boost/interprocess/exceptions.hpp>
@@ -18,10 +18,10 @@
 namespace boost { namespace interprocess { namespace test {
 
 #define BOOST_INTERPROCES_CHECK( P ) \
- if(!(P)) do{ std::cout << "Failed: " << #P << " file: " << __FILE__ << " line : " << __LINE__ << std::endl; throw boost::interprocess::interprocess_exception();}while(0)
+ if(!(P)) do{ std::cout << "Failed: " << #P << " file: " << __FILE__ << " line : " << __LINE__ << std::endl; throw boost::interprocess::interprocess_exception(#P);}while(0)
 
 }}} //namespace boost { namespace interprocess { namespace test {
 
 #include <boost/interprocess/detail/config_end.hpp>
 
-#endif //BOOST_INTERPROCESS_TEST_HEADER
+#endif //BOOST_INTERPROCESS_TEST_CHECK_HEADER

Modified: trunk/libs/interprocess/test/file_lock_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/file_lock_test.cpp (original)
+++ trunk/libs/interprocess/test/file_lock_test.cpp 2010-07-25 11:37:24 EDT (Sun, 25 Jul 2010)
@@ -20,6 +20,16 @@
 #include <cstdio> //std::remove
 
 using namespace boost::interprocess;
+
+static const std::size_t FileSize = 1000;
+inline std::string get_filename()
+{
+ std::string ret (detail::get_temporary_path());
+ ret += "/";
+ ret += test::get_process_id_name();
+ return ret;
+}
+
 //This wrapper is necessary to have a default constructor
 //in generic mutex_test_template functions
 class file_lock_lock_test_wrapper
@@ -27,7 +37,7 @@
 {
    public:
    file_lock_lock_test_wrapper()
- : boost::interprocess::file_lock(test::get_process_id_name())
+ : boost::interprocess::file_lock(get_filename().c_str())
    {}
 };
 
@@ -35,12 +45,12 @@
 {
    //Destroy and create file
    {
- std::remove(test::get_process_id_name());
- std::ofstream file(test::get_process_id_name());
+ std::remove(get_filename().c_str());
+ std::ofstream file(get_filename().c_str());
       if(!file){
          return 1;
       }
- file_lock flock(test::get_process_id_name());
+ file_lock flock(get_filename().c_str());
       {
       scoped_lock<file_lock> sl(flock);
       }
@@ -53,7 +63,7 @@
    }
    {
       //Now test move semantics
- file_lock mapping(test::get_process_id_name());
+ file_lock mapping(get_filename().c_str());
       file_lock move_ctor(boost::interprocess::move(mapping));
       file_lock move_assign;
       move_assign = boost::interprocess::move(move_ctor);
@@ -63,7 +73,7 @@
    //test::test_all_lock<file_lock_lock_test_wrapper>();
    //test::test_all_mutex<false, file_lock_lock_test_wrapper>();
    //test::test_all_sharable_mutex<false, file_lock_lock_test_wrapper>();
- std::remove(test::get_process_id_name());
+ std::remove(get_filename().c_str());
 
    return 0;
 }

Modified: trunk/libs/interprocess/test/file_mapping_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/file_mapping_test.cpp (original)
+++ trunk/libs/interprocess/test/file_mapping_test.cpp 2010-07-25 11:37:24 EDT (Sun, 25 Jul 2010)
@@ -21,6 +21,14 @@
 
 using namespace boost::interprocess;
 
+inline std::string get_filename()
+{
+ std::string ret (detail::get_temporary_path());
+ ret += "/";
+ ret += test::get_process_id_name();
+ return ret;
+}
+
 file_mapping get_file_mapping()
 {
    file_mapping f;
@@ -33,14 +41,14 @@
       const std::size_t FileSize = 99999*2;
       {
          //Create file with given size
- std::ofstream file(test::get_process_id_name(), std::ios::binary | std::ios::trunc);
+ std::ofstream file(get_filename().c_str(), std::ios::binary | std::ios::trunc);
          file.seekp(static_cast<std::streamoff>(FileSize-1));
          file.write("", 1);
       }
 
       {
          //Create a file mapping
- file_mapping mapping(test::get_process_id_name(), read_write);
+ file_mapping mapping(get_filename().c_str(), read_write);
          //Create two mapped regions, one half of the file each
          mapped_region region (mapping
                               ,read_write
@@ -73,7 +81,7 @@
       //See if the pattern is correct in the file
       {
          //Open the file
- std::ifstream file(test::get_process_id_name(), std::ios::binary);
+ std::ifstream file(get_filename().c_str(), std::ios::binary);
 
          //Create a memory buffer
          std::auto_ptr<unsigned char> memory (new unsigned char [FileSize/2 +1]);
@@ -110,7 +118,7 @@
       //Now check the pattern mapping a single read only mapped_region
       {
          //Create a file mapping
- file_mapping mapping(test::get_process_id_name(), read_only);
+ file_mapping mapping(get_filename().c_str(), read_only);
 
          //Create a single regions, mapping all the file
          mapped_region region (mapping
@@ -129,7 +137,7 @@
       }
       {
          //Now test move semantics
- file_mapping mapping(test::get_process_id_name(), read_only);
+ file_mapping mapping(get_filename().c_str(), read_only);
          file_mapping move_ctor(boost::interprocess::move(mapping));
          file_mapping move_assign;
          move_assign = boost::interprocess::move(move_ctor);
@@ -138,11 +146,11 @@
       }
    }
    catch(std::exception &exc){
- file_mapping::remove(test::get_process_id_name());
+ file_mapping::remove(get_filename().c_str());
       std::cout << "Unhandled exception: " << exc.what() << std::endl;
       throw;
    }
- file_mapping::remove(test::get_process_id_name());
+ file_mapping::remove(get_filename().c_str());
    return 0;
 }
 

Modified: trunk/libs/interprocess/test/intermodule_singleton_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/intermodule_singleton_test.cpp (original)
+++ trunk/libs/interprocess/test/intermodule_singleton_test.cpp 2010-07-25 11:37:24 EDT (Sun, 25 Jul 2010)
@@ -49,16 +49,18 @@
 
 int main ()
 {
+
    bool exception_thrown = false;
    bool exception_2_thrown = false;
+
    try{
- detail::intermodule_singleton<MyThrowingClass>::get();
+ detail::intermodule_singleton<MyThrowingClass, true>::get();
    }
    catch(int &){
       exception_thrown = true;
       //Second try
       try{
- detail::intermodule_singleton<MyThrowingClass>::get();
+ detail::intermodule_singleton<MyThrowingClass, true>::get();
       }
       catch(interprocess_exception &){
          exception_2_thrown = true;
@@ -77,7 +79,7 @@
    //Second try
    exception_2_thrown = false;
    try{
- detail::intermodule_singleton<MyThrowingClass>::get();
+ detail::intermodule_singleton<MyThrowingClass, true>::get();
    }
    catch(interprocess_exception &){
       exception_2_thrown = true;

Modified: trunk/libs/interprocess/test/managed_mapped_file_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/managed_mapped_file_test.cpp (original)
+++ trunk/libs/interprocess/test/managed_mapped_file_test.cpp 2010-07-25 11:37:24 EDT (Sun, 25 Jul 2010)
@@ -18,10 +18,17 @@
 
 using namespace boost::interprocess;
 
+inline std::string get_filename()
+{
+ std::string ret (detail::get_temporary_path());
+ ret += "/";
+ ret += test::get_process_id_name();
+ return ret;
+}
+
 int main ()
 {
    const int FileSize = 65536*10;
- const char *const FileName = test::get_process_id_name();
 
    //STL compatible allocator object for memory-mapped file
    typedef allocator<int, managed_mapped_file::segment_manager>
@@ -31,12 +38,12 @@
 
    {
       //Remove the file it is already created
- file_mapping::remove(FileName);
+ file_mapping::remove(get_filename().c_str());
 
       const int max = 100;
       void *array[max];
       //Named allocate capable shared memory allocator
- managed_mapped_file mfile(create_only, FileName, FileSize);
+ managed_mapped_file mfile(create_only, get_filename().c_str(), FileSize);
 
       int i;
       //Let's allocate some memory
@@ -52,10 +59,10 @@
 
    {
       //Remove the file it is already created
- file_mapping::remove(FileName);
+ file_mapping::remove(get_filename().c_str());
 
       //Named allocate capable memory mapped file managed memory class
- managed_mapped_file mfile(create_only, FileName, FileSize);
+ managed_mapped_file mfile(create_only, get_filename().c_str(), FileSize);
 
       //Construct the STL-like allocator with the segment manager
       const allocator_int_t myallocator (mfile.get_segment_manager());
@@ -80,7 +87,7 @@
    }
    {
       //Map preexisting file again in memory
- managed_mapped_file mfile(open_only, FileName);
+ managed_mapped_file mfile(open_only, get_filename().c_str());
 
       //Check vector is still there
       MyVect *mfile_vect = mfile.find<MyVect>("MyVector").first;
@@ -91,7 +98,7 @@
    {
       {
          //Map preexisting file again in copy-on-write
- managed_mapped_file mfile(open_copy_on_write, FileName);
+ managed_mapped_file mfile(open_copy_on_write, get_filename().c_str());
 
          //Check vector is still there
          MyVect *mfile_vect = mfile.find<MyVect>("MyVector").first;
@@ -109,7 +116,7 @@
       //Now check vector is still in the file
       {
          //Map preexisting file again in copy-on-write
- managed_mapped_file mfile(open_copy_on_write, FileName);
+ managed_mapped_file mfile(open_copy_on_write, get_filename().c_str());
 
          //Check vector is still there
          MyVect *mfile_vect = mfile.find<MyVect>("MyVector").first;
@@ -119,7 +126,7 @@
    }
    {
       //Map preexisting file again in copy-on-write
- managed_mapped_file mfile(open_read_only, FileName);
+ managed_mapped_file mfile(open_read_only, get_filename().c_str());
 
       //Check vector is still there
       MyVect *mfile_vect = mfile.find<MyVect>("MyVector").first;
@@ -130,15 +137,15 @@
       std::size_t old_free_memory;
       {
          //Map preexisting file again in memory
- managed_mapped_file mfile(open_only, FileName);
+ managed_mapped_file mfile(open_only, get_filename().c_str());
          old_free_memory = mfile.get_free_memory();
       }
 
       //Now grow the file
- managed_mapped_file::grow(FileName, FileSize);
+ managed_mapped_file::grow(get_filename().c_str(), FileSize);
 
       //Map preexisting file again in memory
- managed_mapped_file mfile(open_only, FileName);
+ managed_mapped_file mfile(open_only, get_filename().c_str());
 
       //Check vector is still there
       MyVect *mfile_vect = mfile.find<MyVect>("MyVector").first;
@@ -155,17 +162,17 @@
                   old_file_size, next_file_size, final_file_size;
       {
          //Map preexisting file again in memory
- managed_mapped_file mfile(open_only, FileName);
+ managed_mapped_file mfile(open_only, get_filename().c_str());
          old_free_memory = mfile.get_free_memory();
          old_file_size = mfile.get_size();
       }
 
       //Now shrink the file
- managed_mapped_file::shrink_to_fit(FileName);
+ managed_mapped_file::shrink_to_fit(get_filename().c_str());
 
       {
          //Map preexisting file again in memory
- managed_mapped_file mfile(open_only, FileName);
+ managed_mapped_file mfile(open_only, get_filename().c_str());
          next_file_size = mfile.get_size();
 
          //Check vector is still there
@@ -183,7 +190,7 @@
       //Now destroy the vector
       {
          //Map preexisting file again in memory
- managed_mapped_file mfile(open_only, FileName);
+ managed_mapped_file mfile(open_only, get_filename().c_str());
 
          //Destroy and check it is not present
          mfile.destroy<MyVect>("MyVector");
@@ -192,17 +199,17 @@
       }
 
       //Now shrink the file
- managed_mapped_file::shrink_to_fit(FileName);
+ managed_mapped_file::shrink_to_fit(get_filename().c_str());
       {
          //Map preexisting file again in memory
- managed_mapped_file mfile(open_only, FileName);
+ managed_mapped_file mfile(open_only, get_filename().c_str());
          final_file_size = mfile.get_size();
          if(next_file_size <= final_file_size)
             return -1;
       }
       {
          //Now test move semantics
- managed_mapped_file original(open_only, FileName);
+ managed_mapped_file original(open_only, get_filename().c_str());
          managed_mapped_file move_ctor(boost::interprocess::move(original));
          managed_mapped_file move_assign;
          move_assign = boost::interprocess::move(move_ctor);
@@ -210,7 +217,7 @@
       }
    }
 
- file_mapping::remove(FileName);
+ file_mapping::remove(get_filename().c_str());
    return 0;
 }
 

Modified: trunk/libs/interprocess/test/mapped_file_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/mapped_file_test.cpp (original)
+++ trunk/libs/interprocess/test/mapped_file_test.cpp 2010-07-25 11:37:24 EDT (Sun, 25 Jul 2010)
@@ -18,19 +18,26 @@
 #include <cstdio>
 #include <cstring>
 #include <string>
+#include <boost/interprocess/detail/os_file_functions.hpp>
 #include "get_process_id_name.hpp"
 
 using namespace boost::interprocess;
 
 static const std::size_t FileSize = 1000;
-static const char * FileName = test::get_process_id_name();
+inline std::string get_filename()
+{
+ std::string ret (detail::get_temporary_path());
+ ret += "/";
+ ret += test::get_process_id_name();
+ return ret;
+}
 
 struct file_destroyer
 {
    ~file_destroyer()
    {
       //The last destructor will destroy the file
- file_mapping::remove(FileName);
+ file_mapping::remove(get_filename().c_str());
    }
 };
 
@@ -45,15 +52,15 @@
       <boost::interprocess::detail::file_wrapper> mapped_file;
    public:
    mapped_file_creation_test_wrapper(boost::interprocess::create_only_t)
- : mapped_file(boost::interprocess::create_only, FileName, FileSize)
+ : mapped_file(boost::interprocess::create_only, get_filename().c_str(), FileSize, read_write, 0, permissions())
    {}
 
    mapped_file_creation_test_wrapper(boost::interprocess::open_only_t)
- : mapped_file(boost::interprocess::open_only, FileName)
+ : mapped_file(boost::interprocess::open_only, get_filename().c_str(), read_write, 0)
    {}
 
    mapped_file_creation_test_wrapper(boost::interprocess::open_or_create_t)
- : mapped_file(boost::interprocess::open_or_create, FileName, FileSize)
+ : mapped_file(boost::interprocess::open_or_create, get_filename().c_str(), FileSize, read_write, 0, permissions())
    {}
 };
 
@@ -61,15 +68,15 @@
 {
    typedef boost::interprocess::detail::managed_open_or_create_impl
       <boost::interprocess::detail::file_wrapper> mapped_file;
- file_mapping::remove(FileName);
+ file_mapping::remove(get_filename().c_str());
    test::test_named_creation<mapped_file_creation_test_wrapper>();
 
    //Create and get name, size and address
    {
- mapped_file file1(create_only, FileName, FileSize);
+ mapped_file file1(create_only, get_filename().c_str(), FileSize, read_write, 0, permissions());
 
       //Compare name
- if(std::strcmp(file1.get_name(), FileName) != 0){
+ if(std::strcmp(file1.get_name(), get_filename().c_str()) != 0){
          return 1;
       }
 
@@ -81,7 +88,7 @@
       mapped_file move_assign;
       move_assign = boost::interprocess::move(move_ctor);
    }
- file_mapping::remove(FileName);
+// file_mapping::remove(get_filename().c_str());
    return 0;
 }
 

Modified: trunk/libs/interprocess/test/mutex_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/mutex_test.cpp (original)
+++ trunk/libs/interprocess/test/mutex_test.cpp 2010-07-25 11:37:24 EDT (Sun, 25 Jul 2010)
@@ -10,10 +10,7 @@
 
 #include <boost/interprocess/detail/config_begin.hpp>
 #include <boost/interprocess/sync/interprocess_mutex.hpp>
-#include <boost/interprocess/sync/scoped_lock.hpp>
-#include <boost/date_time/posix_time/posix_time_types.hpp>
 #include "mutex_test_template.hpp"
-#include "named_creation_template.hpp"
 
 int main ()
 {

Modified: trunk/libs/interprocess/test/mutex_test_template.hpp
==============================================================================
--- trunk/libs/interprocess/test/mutex_test_template.hpp (original)
+++ trunk/libs/interprocess/test/mutex_test_template.hpp 2010-07-25 11:37:24 EDT (Sun, 25 Jul 2010)
@@ -27,6 +27,8 @@
 #include "util.hpp"
 #include <boost/thread/thread.hpp>
 #include <iostream>
+#include <boost/interprocess/sync/scoped_lock.hpp>
+#include <boost/date_time/posix_time/posix_time_types.hpp>
 
 namespace boost { namespace interprocess { namespace test {
 

Modified: trunk/libs/interprocess/test/named_creation_template.hpp
==============================================================================
--- trunk/libs/interprocess/test/named_creation_template.hpp (original)
+++ trunk/libs/interprocess/test/named_creation_template.hpp 2010-07-25 11:37:24 EDT (Sun, 25 Jul 2010)
@@ -31,7 +31,7 @@
    }
    catch(...){
       //This shouldn't throw so show the error
- BOOST_INTERPROCES_CHECK(false);
+ BOOST_INTERPROCES_CHECK( false );
    }
 }
 

Modified: trunk/libs/interprocess/test/print_container.hpp
==============================================================================
--- trunk/libs/interprocess/test/print_container.hpp (original)
+++ trunk/libs/interprocess/test/print_container.hpp 2010-07-25 11:37:24 EDT (Sun, 25 Jul 2010)
@@ -8,8 +8,8 @@
 //
 //////////////////////////////////////////////////////////////////////////////
 
-#ifndef BOOST_PRINTCONTAINER_HPP
-#define BOOST_PRINTCONTAINER_HPP
+#ifndef BOOST_INTERPROCESS_TEST_PRINTCONTAINER_HPP
+#define BOOST_INTERPROCESS_TEST_PRINTCONTAINER_HPP
 
 #include <boost/interprocess/detail/config_begin.hpp>
 #include <functional>
@@ -61,4 +61,4 @@
 
 #include <boost/interprocess/detail/config_end.hpp>
 
-#endif //#ifndef BOOST_PRINTCONTAINER_HPP
+#endif //#ifndef BOOST_INTERPROCESS_TEST_PRINTCONTAINER_HPP

Modified: trunk/libs/interprocess/test/shared_memory_mapping_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/shared_memory_mapping_test.cpp (original)
+++ trunk/libs/interprocess/test/shared_memory_mapping_test.cpp 2010-07-25 11:37:24 EDT (Sun, 25 Jul 2010)
@@ -69,6 +69,9 @@
             ;++i){
             *filler++ = static_cast<unsigned char>(i);
          }
+ if(!region.flush()){
+ return 1;
+ }
       }
 
       //See if the pattern is correct in the file using two mapped regions

Modified: trunk/libs/interprocess/test/shared_memory_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/shared_memory_test.cpp (original)
+++ trunk/libs/interprocess/test/shared_memory_test.cpp 2010-07-25 11:37:24 EDT (Sun, 25 Jul 2010)
@@ -42,15 +42,15 @@
 
    public:
    shared_memory_creation_test_wrapper(create_only_t)
- : shared_memory(create_only, ShmName, ShmSize)
+ : shared_memory(create_only, ShmName, ShmSize, read_write, 0, permissions())
    {}
 
    shared_memory_creation_test_wrapper(open_only_t)
- : shared_memory(open_only, ShmName)
+ : shared_memory(open_only, ShmName, read_write, 0)
    {}
 
    shared_memory_creation_test_wrapper(open_or_create_t)
- : shared_memory(open_or_create, ShmName, ShmSize)
+ : shared_memory(open_or_create, ShmName, ShmSize, read_write, 0, permissions())
    {}
 };
 
@@ -64,7 +64,7 @@
       //Create and get name, size and address
       {
          shared_memory_object::remove(ShmName);
- shared_memory shm1(create_only, ShmName, ShmSize);
+ shared_memory shm1(create_only, ShmName, ShmSize, read_write, 0, permissions());
 
          //Compare name
          if(std::strcmp(shm1.get_name(), ShmName) != 0){

Modified: trunk/libs/interprocess/test/vector_test.hpp
==============================================================================
--- trunk/libs/interprocess/test/vector_test.hpp (original)
+++ trunk/libs/interprocess/test/vector_test.hpp 2010-07-25 11:37:24 EDT (Sun, 25 Jul 2010)
@@ -8,6 +8,9 @@
 //
 //////////////////////////////////////////////////////////////////////////////
 
+#ifndef BOOST_INTERPROCESS_TEST_VECTOR_TEST_HEADER
+#define BOOST_INTERPROCESS_TEST_VECTOR_TEST_HEADER
+
 #include <boost/interprocess/detail/config_begin.hpp>
 #include <algorithm>
 #include <memory>
@@ -246,3 +249,5 @@
 } //namespace boost{
 
 #include <boost/interprocess/detail/config_end.hpp>
+
+#endif

Modified: trunk/libs/interprocess/test/windows_shared_memory_test.cpp
==============================================================================
--- trunk/libs/interprocess/test/windows_shared_memory_test.cpp (original)
+++ trunk/libs/interprocess/test/windows_shared_memory_test.cpp 2010-07-25 11:37:24 EDT (Sun, 25 Jul 2010)
@@ -42,15 +42,15 @@
 {
    public:
    shared_memory_creation_test_wrapper(create_only_t)
- : windows_shared_memory_t(create_only, name_initialization_routine(), ShmSize)
+ : windows_shared_memory_t(create_only, name_initialization_routine(), ShmSize, read_write, 0, permissions())
    {}
 
    shared_memory_creation_test_wrapper(open_only_t)
- : windows_shared_memory_t(open_only, name_initialization_routine())
+ : windows_shared_memory_t(open_only, name_initialization_routine(), read_write, 0)
    {}
 
    shared_memory_creation_test_wrapper(open_or_create_t)
- : windows_shared_memory_t(open_or_create, name_initialization_routine(), ShmSize)
+ : windows_shared_memory_t(open_or_create, name_initialization_routine(), ShmSize, read_write, 0, permissions())
    {}
 };
 


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk