--- a/kernel/eka/memmodel/epoc/flexible/mprocess.cpp Mon Feb 01 19:40:00 2010 +0100
+++ b/kernel/eka/memmodel/epoc/flexible/mprocess.cpp Mon Feb 01 19:49:38 2010 +0100
@@ -56,6 +56,7 @@
DProcess::Destruct();
}
+
TInt DMemModelProcess::TryOpenOsAsid()
{
if (__e32_atomic_tas_ord32(&iOsAsidRefCount, 1, 1, 0))
@@ -65,6 +66,7 @@
return KErrDied;
}
+
void DMemModelProcess::CloseOsAsid()
{
if (__e32_atomic_tas_ord32(&iOsAsidRefCount, 1, -1, 0) == 1)
@@ -73,6 +75,7 @@
}
}
+
void DMemModelProcess::AsyncCloseOsAsid()
{
if (__e32_atomic_tas_ord32(&iOsAsidRefCount, 1, -1, 0) == 1)
@@ -81,6 +84,7 @@
}
}
+
TInt DMemModelProcess::NewChunk(DChunk*& aChunk, SChunkCreateInfo& aInfo, TLinAddr& aRunAddr)
{
aChunk=NULL;
@@ -941,7 +945,9 @@
if(aFlags&KCheckLocalAddress)
MM::ValidateLocalIpcAddress(dest,alias_size,ETrue);
+ UNLOCK_USER_MEMORY();
memcpy( (TAny*)dest, (const TAny*)alias_src, alias_size);
+ LOCK_USER_MEMORY();
src+=alias_size;
dest+=alias_size;
@@ -1018,7 +1024,9 @@
if(aFlags&KCheckLocalAddress)
MM::ValidateLocalIpcAddress(src,alias_size,EFalse);
+ UNLOCK_USER_MEMORY();
memcpy( (TAny*)alias_dest, (const TAny*)src, alias_size);
+ LOCK_USER_MEMORY();
src+=alias_size;
dest+=alias_size;