--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/symport/e32/include/e32def_private.h Thu Jun 25 15:59:54 2009 +0100
@@ -0,0 +1,658 @@
+// Copyright (c) 1994-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// e32\include\e32def_private.h
+//
+//
+
+#ifndef __E32DEF_PRIVATE_H__
+#define __E32DEF_PRIVATE_H__
+
+#ifdef __PROFILING__
+
+/**
+@publishedPartner
+@removed
+*/
+#define __PROFILE_START(aBin) RDebug::ProfileStart(aBin)
+
+/**
+@publishedPartner
+@removed
+*/
+#define __PROFILE_END(aBin) RDebug::ProfileEnd(aBin)
+
+/**
+@publishedPartner
+@removed
+*/
+#define __PROFILE_RESET(aNumberOfBins) RDebug::ProfileReset(0,aNumberOfBins)
+
+/**
+@publishedPartner
+@removed
+*/
+#define __PROFILE_DISPLAY(aNumberOfBins) \
+ { TFixedArray<TProfile, aNumberOfBins> result; \
+ RDebug::ProfileResult(result.Begin(), 0, aNumberOfBins); \
+ for (TInt i=0; i<aNumberOfBins; i++) \
+ RDebug::Print(_L("Profile bin %d: Calls: %d, Clock ticks: %d\n" ),i,res[i].iCount,result[i].iTime); \
+ }
+#else /* __PROFILING__ */
+#define __PROFILE_START(aBin)
+#define __PROFILE_END(aBin)
+#define __PROFILE_RESET(aNumberOfBins)
+#define __PROFILE_DISPLAY(aNumberOfBins)
+#endif
+
+#if defined(_DEBUG)
+
+/**
+@publishedPartner
+@released
+
+Marks the start of Kernel heap checking.
+
+Checking the Kernel heap is only useful when developing Kernel side code such
+as device drivers and media drivers.
+
+This macro is defined only for debug builds.
+
+This macro must be matched by a corresponding call to __KHEAP_MARKEND or __KHEAP_MARKENDC.
+Calls to this macro can be nested but each call must be matched by corresponding
+call to __KHEAP_MARKEND or __KHEAP_MARKENDC.
+
+@see User::__DbgMarkStart()
+@see __KHEAP_MARKEND
+@see __KHEAP_MARKENDC
+*/
+#define __KHEAP_MARK User::__DbgMarkStart(TRUE)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Checks that the number of allocated cells at the current nested level of the
+Kernel heap is the same as the specified value. This macro is defined only
+for debug builds. Checking the Kernel heap is only useful when developing
+Kernel side code such as device drivers and media drivers.
+
+The macro also takes the name of the file containing this source code statement
+and the line number of this source code statement; they are displayed as part
+of the panic category, if the checks fail.
+
+@param aCount The number of heap cells expected to be allocated at
+ the current nest level.
+
+@see User::__DbgMarkCheck()
+@see __UHEAP_CHECK
+*/
+#define __KHEAP_CHECK(aCount) User::__DbgMarkCheck(TRUE,FALSE,aCount,(TText8*)__FILE__,__LINE__)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Checks that the total number of allocated cells on the Kernel heap is the same
+as the specified value.
+
+It is only useful when developing Kernel side code such as device drivers
+and media drivers.
+
+The macro also takes the name of the file containing this source code statement
+and the line number of this source code statement; they are displayed as part
+of the panic category, if the checks fail.
+
+This macro is defined only for debug builds.
+
+@param aCount The total number of heap cells expected to be allocated
+
+@see User::__DbgMarkCheck()
+@see __UHEAP_CHECKALL
+*/
+#define __KHEAP_CHECKALL(aCount) User::__DbgMarkCheck(TRUE,TRUE,aCount,(TText8*)__FILE__,__LINE__)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Marks the end of Kernel heap checking. The macro expects zero heap cells to
+remain allocated at the current nest level.
+
+This macro is defined only for debug builds. Checking the Kernel heap is only
+useful when developing Kernel side code such as device drivers and media drivers.
+
+This macro must match an earlier call to __KHEAP_MARK.
+
+@see User::__DbgMarkEnd()
+@see __KHEAP_MARK
+*/
+#define __KHEAP_MARKEND User::__DbgMarkEnd(TRUE,0)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Marks the end of Kernel heap checking. The macro expects aCount heap cells
+to remain allocated at the current nest level.
+
+This macro is defined only for debug builds.
+
+This macro must match an earlier call to __KHEAP_MARK.
+
+@param aCount The number of heap cells expected to remain allocated at
+ the current nest level.
+
+@see User::__DbgMarkEnd()
+@see __KHEAP_MARK
+*/
+#define __KHEAP_MARKENDC(aCount) User::__DbgMarkEnd(TRUE,aCount)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Simulates Kernel heap allocation failure. The failure occurs on the next call
+to new or any of the functions which allocate memory from the heap. This macro
+is defined only for debug builds.
+
+Checking the Kernel heap is only useful when developing Kernel side code such
+as device drivers and media drivers.
+
+@param aCount The rate of failure - heap allocation fails every aCount attempt.
+
+@see User::__DbgSetAllocFail()
+*/
+#define __KHEAP_FAILNEXT(aCount) User::__DbgSetAllocFail(TRUE,RAllocator::EFailNext,aCount)
+
+/**
+@publishedPartner
+@released
+
+Simulates Kernel heap allocation failures. aBurst failures will occur on the next call
+to new or any of the functions which allocate memory from the heap. This macro
+is defined only for debug builds.
+
+Checking the Kernel heap is only useful when developing Kernel side code such
+as device drivers and media drivers.
+
+@param aCount The heap allocation will fail after aCount-1 allocation attempts.
+ Note when used with RHeap the maximum value aCount can be set
+ to is KMaxTUint16.
+@param aBurst The number of allocations that will fail after aCount-1 allocation
+ attempts. Note when used with RHeap the maximum value aBurst can be
+ set to is KMaxTUint16.
+
+
+@see User::__DbgSetBurstAllocFail()
+*/
+#define __KHEAP_BURSTFAILNEXT(aCount,aBurst) User::__DbgSetBurstAllocFail(TRUE,RAllocator::EBurstFailNext,aCount,aBurst)
+
+
+/**
+@publishedPartner
+@released
+
+Simulates Kernel heap allocation failure.
+
+The failure occurs on subsequent calls to new or any of the functions which
+allocate memory from this heap.
+
+This macro is defined only for debug builds.
+
+@param aType The type of failure to be simulated.
+@param aRate The failure rate.
+
+@see RAllocator::TAllocFail
+@see User::__DbgSetAllocFail()
+*/
+#define __KHEAP_SETFAIL(aType,aRate) User::__DbgSetAllocFail(TRUE,aType,aRate)
+
+/**
+@publishedPartner
+@released
+
+Simulates Kernel heap allocation failure.
+
+The failure occurs on subsequent calls to new or any of the functions which
+allocate memory from this heap.
+
+This macro is defined only for debug builds.
+
+@param aType The type of failure to be simulated.
+@param aRate The failure rate. Note when used with RHeap the maximum value
+ aRate can be set to is KMaxTUint16.
+@param aBurst The number of consecutive allocations that will fail. Note
+ when used with RHeap the maximum value aBurst can be set to
+ is KMaxTUint16.
+
+@see RAllocator::TAllocFail
+@see User::__DbgSetBurstAllocFail()
+*/
+#define __KHEAP_SETBURSTFAIL(aType,aRate,aBurst) User::__DbgSetBurstAllocFail(TRUE,aType,aRate,aBurst)
+
+
+
+/**
+@publishedPartner
+@released
+
+Cancels simulated Kernel heap allocation failure.
+
+Checking the Kernel heap is only useful when developing Kernel side code such
+as device drivers and media drivers.
+
+This macro is defined only for debug builds.
+
+@see User::__DbgSetAllocFail()
+*/
+#define __KHEAP_RESET User::__DbgSetAllocFail(TRUE,RAllocator::ENone,1)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Cancels simulated kernel heap allocation failure.
+It walks the the heap and sets the nesting level for all allocated
+cells to zero.
+
+Checking the kernel heap is only useful when developing kernel side code such
+as device drivers and media drivers.
+
+This macro is defined only for debug builds.
+*/
+#define __KHEAP_TOTAL_RESET User::__DbgSetAllocFail(TRUE,RAllocator::EReset,1)
+
+#else
+
+/**
+@publishedPartner
+@released
+
+Marks the start of Kernel heap checking.
+
+Checking the Kernel heap is only useful when developing Kernel side code such
+as device drivers and media drivers.
+
+This macro is defined only for debug builds.
+
+This macro must be matched by a corresponding call to __KHEAP_MARKEND or __KHEAP_MARKENDC.
+Calls to this macro can be nested but each call must be matched by corresponding
+call to __KHEAP_MARKEND or __KHEAP_MARKENDC.
+
+@see User::__DbgMarkStart()
+@see __KHEAP_MARKEND
+@see __KHEAP_MARKENDC
+*/
+#define __KHEAP_MARK
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Checks that the number of allocated cells at the current nested level of the
+Kernel heap is the same as the specified value. This macro is defined only
+for debug builds. Checking the Kernel heap is only useful when developing
+Kernel side code such as device drivers and media drivers.
+
+The macro also takes the name of the file containing this source code statement
+and the line number of this source code statement; they are displayed as part
+of the panic category, if the checks fail.
+
+@param aCount The number of heap cells expected to be allocated at
+ the current nest level.
+
+@see User::__DbgMarkCheck()
+@see __UHEAP_CHECK
+*/
+#define __KHEAP_CHECK(aCount)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Checks that the total number of allocated cells on the Kernel heap is the same
+as the specified value.
+
+It is only useful when developing Kernel side code such as device drivers
+and media drivers.
+
+The macro also takes the name of the file containing this source code statement
+and the line number of this source code statement; they are displayed as part
+of the panic category, if the checks fail.
+
+This macro is defined only for debug builds.
+
+@param aCount The total number of heap cells expected to be allocated
+
+@see User::__DbgMarkCheck()
+@see __UHEAP_CHECKALL
+*/
+#define __KHEAP_CHECKALL(aCount)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Marks the end of Kernel heap checking. The macro expects zero heap cells to
+remain allocated at the current nest level.
+
+This macro is defined only for debug builds. Checking the Kernel heap is only
+useful when developing Kernel side code such as device drivers and media drivers.
+
+This macro must match an earlier call to __KHEAP_MARK.
+
+@see User::__DbgMarkEnd()
+@see __KHEAP_MARK
+*/
+#define __KHEAP_MARKEND
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Marks the end of Kernel heap checking. The macro expects aCount heap cells
+to remain allocated at the current nest level.
+
+This macro is defined only for debug builds.
+
+This macro must match an earlier call to __KHEAP_MARK.
+
+@param aCount The number of heap cells expected to remain allocated at
+ the current nest level.
+
+@see User::__DbgMarkEnd()
+@see __KHEAP_MARK
+*/
+#define __KHEAP_MARKENDC(aCount)
+
+
+
+
+/**
+@publishedPartner
+@released
+
+Simulates Kernel heap allocation failure. The failure occurs on the next call
+to new or any of the functions which allocate memory from the heap. This macro
+is defined only for debug builds.
+
+Checking the Kernel heap is only useful when developing Kernel side code such
+as device drivers and media drivers.
+
+@param aCount The rate of failure - heap allocation fails every aCount attempt.
+
+@see User::__DbgSetAllocFail()
+*/
+#define __KHEAP_FAILNEXT(aCount)
+
+/**
+@publishedPartner
+@released
+
+Simulates Kernel heap allocation failures. aBurst failures will occur on the next call
+to new or any of the functions which allocate memory from the heap. This macro
+is defined only for debug builds.
+
+Checking the Kernel heap is only useful when developing Kernel side code such
+as device drivers and media drivers.
+
+@param aCount The heap allocation will fail after aCount-1 allocation attempts.
+ Note when used with RHeap the maximum value aCount can be set
+ to is KMaxTUint16.
+@param aBurst The number of allocations that will fail after aCount-1 allocation
+ attempts. Note when used with RHeap the maximum value aBurst can
+ be set to is KMaxTUint16.
+
+@see User::__DbgSetBurstAllocFail()
+*/
+#define __KHEAP_BURSTFAILNEXT(aCount,aBurst)
+
+
+
+/**
+@publishedPartner
+@released
+
+Simulates Kernel heap allocation failure.
+
+The failure occurs on subsequent calls to new or any of the functions which
+allocate memory from this heap.
+
+This macro is defined only for debug builds.
+
+@param aType The type of failure to be simulated.
+@param aRate The failure rate.
+
+@see User::__DbgSetAllocFail()
+*/
+#define __KHEAP_SETFAIL(aType,aRate)
+
+/**
+@publishedPartner
+@released
+
+Simulates Kernel heap allocation failure.
+
+The failure occurs on subsequent calls to new or any of the functions which
+allocate memory from this heap.
+
+This macro is defined only for debug builds.
+
+@param aType The type of failure to be simulated.
+@param aRate The failure rate. Note when used with RHeap the maximum value
+ aRate can be set to is KMaxTUint16.
+@param aBurst The number of consecutive allocations that will fail. Note
+ when used with RHeap the maximum value aBurst can be set
+ to is KMaxTUint16.
+
+@see User::__DbgSetBurstAllocFail()
+*/
+#define __KHEAP_SETBURSTFAIL(aType,aRate,aBurst)
+
+
+
+/**
+@publishedPartner
+@released
+
+Cancels simulated Kernel heap allocation failure.
+
+Checking the Kernel heap is only useful when developing Kernel side code such
+as device drivers and media drivers.
+
+This macro is defined only for debug builds.
+
+@see User::__DbgSetAllocFail()
+*/
+#define __KHEAP_RESET
+
+
+
+/**
+@publishedPartner
+@released
+
+Cancels simulated kernel heap allocation failure.
+It walks the the heap and sets the nesting level for all allocated
+cells to zero.
+
+Checking the kernel heap is only useful when developing kernel side code such
+as device drivers and media drivers.
+
+This macro is defined only for debug builds.
+*/
+#define __KHEAP_TOTAL_RESET
+#endif
+
+#ifndef __VALUE_IN_REGS__
+/**
+@publishedPartner
+@released
+*/
+#define __VALUE_IN_REGS__
+#endif
+
+#ifdef __REMOVE_PLATSEC_DIAGNOSTICS__
+/**
+@publishedPartner
+@released
+*/
+#ifndef __REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
+#define __REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
+#endif /*__REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__*/
+#endif /*__REMOVE_PLATSEC_DIAGNOSTICS__*/
+
+#ifndef __REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
+/**
+@internalComponent
+*/
+#define __PLATSEC_DIAGNOSTIC_FILE_AND_LINE_HELPER(l) #l
+/**
+@internalComponent
+*/
+#define __PLATSEC_DIAGNOSTIC_FILE_AND_LINE_HELPER2(f,l) f "(" __PLATSEC_DIAGNOSTIC_FILE_AND_LINE_HELPER(l) ")"
+/**
+@publishedPartner
+@released
+*/
+#define __PLATSEC_DIAGNOSTIC_FILE_AND_LINE __PLATSEC_DIAGNOSTIC_FILE_AND_LINE_HELPER2(__FILE__,__LINE__)
+
+#endif /* !__REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__ */
+
+#ifndef __REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__
+
+/**
+@publishedPartner
+@released
+
+A macro that should be used to enclose a platform security diagnostic
+'C' style string that can be passed to a capability checking function such
+as RThread::HasCapability() and Kern::CurrentThreadHasCapability().
+
+The content of the string is emitted if the capability test finds that
+the capability is not present.
+
+The macro provides a convenient mechanism that allows the strings to
+be removed from future versions of Symbian OS.
+
+For example:
+
+@code
+if(!Kern::CurrentThreadHasCapability(ECapabilityPowerMgmt,__PLATSEC_DIAGNOSTIC_STRING("Checked by Hal function EDisplayHalSetState")))
+ {
+ return KErrPermissionDenied;
+ }
+@endcode
+
+In this example, the string:
+
+@code
+Checked by Hal function EDisplayHalSetState
+@endcode
+
+is emitted if the calling process does not have the ECapabilityPowerMgmt capability.
+
+@param s A C-style string.
+
+@see RProcess::HasCapability()
+@see RThread::HasCapability()
+@see RMessagePtr2::HasCapability()
+@see User::CreatorHasCapability()
+*/
+#define __PLATSEC_DIAGNOSTIC_STRING(s) s
+
+#else /* __REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__ */
+
+#define __PLATSEC_DIAGNOSTIC_STRING(s) NULL
+
+#endif /* !__REMOVE_PLATSEC_DIAGNOSTIC_STRINGS__ */
+
+/** @internalTechnology */
+#define __NO_MUTABLE_KEYWORD
+
+
+/**
+@internalTechnology
+
+A sorted list of all the code segments in ROM that contain an Exception Descriptor.
+
+*/
+typedef struct TRomExceptionSearchTable
+ {
+ /**
+ The number of entries in the following table.
+ */
+ TInt32 iNumEntries;
+
+ /**
+ Address of the code segment of each TRomImageHeader that has an Exception Descriptor.
+ */
+ TLinAddr iEntries[1];
+ } TRomExceptionSearchTable;
+
+/**
+@internalComponent
+*/
+typedef struct TExceptionDescriptor
+ {
+ TLinAddr iExIdxBase;
+ TLinAddr iExIdxLimit;
+ TLinAddr iROSegmentBase;
+ TLinAddr iROSegmentLimit;
+ } TExceptionDescriptor;
+
+#ifdef __KERNEL_MODE__
+
+/** @internalComponent */
+#define KIMPORT_C IMPORT_C
+
+/** @internalComponent */
+#define KEXPORT_C EXPORT_C
+
+#else
+#define KIMPORT_C
+#define KEXPORT_C
+#endif
+
+#endif //__E32DEF_PRIVATE_H__