kernel/eka/memmodel/epoc/flexible/mprocess.cpp
changeset 36 538db54a451d
parent 31 56f325a607ea
equal deleted inserted replaced
34:f497542af8e4 36:538db54a451d
    54 	delete iSharedChunks;
    54 	delete iSharedChunks;
    55 
    55 
    56 	DProcess::Destruct();
    56 	DProcess::Destruct();
    57 	}
    57 	}
    58 
    58 
       
    59 
    59 TInt DMemModelProcess::TryOpenOsAsid()
    60 TInt DMemModelProcess::TryOpenOsAsid()
    60 	{
    61 	{
    61 	if (__e32_atomic_tas_ord32(&iOsAsidRefCount, 1, 1, 0))
    62 	if (__e32_atomic_tas_ord32(&iOsAsidRefCount, 1, 1, 0))
    62 		{
    63 		{
    63 		return iOsAsid;
    64 		return iOsAsid;
    64 		}
    65 		}
    65 	return KErrDied;
    66 	return KErrDied;
    66 	}
    67 	}
       
    68 
    67 
    69 
    68 void DMemModelProcess::CloseOsAsid()
    70 void DMemModelProcess::CloseOsAsid()
    69 	{
    71 	{
    70 	if (__e32_atomic_tas_ord32(&iOsAsidRefCount, 1, -1, 0) == 1)
    72 	if (__e32_atomic_tas_ord32(&iOsAsidRefCount, 1, -1, 0) == 1)
    71 		{// Last reference has been closed so free the asid.
    73 		{// Last reference has been closed so free the asid.
    72 		MM::AddressSpaceFree(iOsAsid);
    74 		MM::AddressSpaceFree(iOsAsid);
    73 		}
    75 		}
    74 	}
    76 	}
    75 
    77 
       
    78 
    76 void DMemModelProcess::AsyncCloseOsAsid()
    79 void DMemModelProcess::AsyncCloseOsAsid()
    77 	{
    80 	{
    78 	if (__e32_atomic_tas_ord32(&iOsAsidRefCount, 1, -1, 0) == 1)
    81 	if (__e32_atomic_tas_ord32(&iOsAsidRefCount, 1, -1, 0) == 1)
    79 		{// Last reference has been closed so free the asid asynchronusly.
    82 		{// Last reference has been closed so free the asid asynchronusly.
    80 		MM::AsyncAddressSpaceFree(iOsAsid);
    83 		MM::AsyncAddressSpaceFree(iOsAsid);
    81 		}
    84 		}
    82 	}
    85 	}
       
    86 
    83 
    87 
    84 TInt DMemModelProcess::NewChunk(DChunk*& aChunk, SChunkCreateInfo& aInfo, TLinAddr& aRunAddr)
    88 TInt DMemModelProcess::NewChunk(DChunk*& aChunk, SChunkCreateInfo& aInfo, TLinAddr& aRunAddr)
    85 	{
    89 	{
    86 	aChunk=NULL;
    90 	aChunk=NULL;
    87 
    91