kerneltest/e32test/mmu/freeram.h
author hgs
Thu, 12 Aug 2010 12:51:24 +0100
changeset 245 647ab20fee2e
parent 231 75252ea6123b
child 257 3e88ff8f41d5
permissions -rw-r--r--
201031_10
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     1
// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     2
// All rights reserved.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     3
// This component and the accompanying materials are made available
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     4
// under the terms of the License "Eclipse Public License v1.0"
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     5
// which accompanies this distribution, and is available
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     7
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     8
// Initial Contributors:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    10
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    11
// Contributors:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    12
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    13
// Description:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    14
// e32test\mmu\freeram.h
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    15
// 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    16
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    17
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    18
#ifndef __FREERAM_H__
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    19
#define __FREERAM_H__
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    20
231
75252ea6123b 201029_03
hgs
parents: 0
diff changeset
    21
/**
75252ea6123b 201029_03
hgs
parents: 0
diff changeset
    22
Get the amount of free RAM in the system in bytes.
75252ea6123b 201029_03
hgs
parents: 0
diff changeset
    23
75252ea6123b 201029_03
hgs
parents: 0
diff changeset
    24
This calls the kernel HAL supervisor barrier to ensure that asynchronous cleanup in the supervisor
75252ea6123b 201029_03
hgs
parents: 0
diff changeset
    25
happens before the amount of free RAM is measured.
75252ea6123b 201029_03
hgs
parents: 0
diff changeset
    26
75252ea6123b 201029_03
hgs
parents: 0
diff changeset
    27
There is also the option to wait for upto a specified timeout for the system to become idle.
75252ea6123b 201029_03
hgs
parents: 0
diff changeset
    28
75252ea6123b 201029_03
hgs
parents: 0
diff changeset
    29
@param aIdleTimeoutMs If non-zero, the number of milliseconds to wait for the system to become idle.
75252ea6123b 201029_03
hgs
parents: 0
diff changeset
    30
75252ea6123b 201029_03
hgs
parents: 0
diff changeset
    31
@return On sucess returns the amount of free RAM in bytes, KErrTimedOut if the timeout expired
75252ea6123b 201029_03
hgs
parents: 0
diff changeset
    32
        without the system becoming idle, or one of the other system-wide error codes.
75252ea6123b 201029_03
hgs
parents: 0
diff changeset
    33
*/
75252ea6123b 201029_03
hgs
parents: 0
diff changeset
    34
TInt FreeRam(TInt aIdleTimeoutMs = 0)
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    35
	{
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    36
	// wait for any async cleanup in the supervisor to finish first...
231
75252ea6123b 201029_03
hgs
parents: 0
diff changeset
    37
	TInt r = UserSvr::HalFunction(EHalGroupKernel, EKernelHalSupervisorBarrier,
75252ea6123b 201029_03
hgs
parents: 0
diff changeset
    38
								  (TAny*)aIdleTimeoutMs, 0);
75252ea6123b 201029_03
hgs
parents: 0
diff changeset
    39
	if (r != KErrNone)
75252ea6123b 201029_03
hgs
parents: 0
diff changeset
    40
		return r;
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    41
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    42
	TMemoryInfoV1Buf meminfo;
231
75252ea6123b 201029_03
hgs
parents: 0
diff changeset
    43
	r = UserHal::MemoryInfo(meminfo);
75252ea6123b 201029_03
hgs
parents: 0
diff changeset
    44
	if (r != KErrNone)
75252ea6123b 201029_03
hgs
parents: 0
diff changeset
    45
		return r;
75252ea6123b 201029_03
hgs
parents: 0
diff changeset
    46
	
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    47
	return meminfo().iFreeRamInBytes;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    48
	}
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    49
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    50
#endif