--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32test/nkernsa/utils.h Mon Oct 19 15:55:17 2009 +0100
@@ -0,0 +1,134 @@
+// Copyright (c) 2006-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 "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// e32test\nkernsa\utils.h
+//
+//
+
+#ifndef __UTILS_H__
+#define __UTILS_H__
+#include <e32err.h>
+#include <nkern.h>
+
+extern "C" {
+
+extern TBool InitialThreadDefined;
+
+extern void SetupMemoryAllocator();
+extern TAny* malloc(TUint32 aSize);
+extern void free(TAny* aCell);
+extern TAny* realloc(TAny* aCell, TUint32 aSize);
+
+extern TUint32 round_to_page(TUint32 x);
+
+extern void SpinWait(TUint32 aTicks);
+extern void nfcfspin(TUint32 aTicks);
+extern void fcfspin(TUint64 aTicks);
+extern void DebugPrint(const char*, int);
+
+extern void __cpu_idle();
+extern void __cpu_yield();
+extern TLinAddr __stack_pointer();
+extern TUint32 __cpu_status_reg();
+extern TUint32 __cpu_id();
+extern TUint32 __trace_cpu_num();
+extern void __finish();
+
+extern void* memcpy(void*, const void*, unsigned);
+extern void* memset(void*, int, unsigned);
+extern void* memclr(void*, unsigned);
+extern void* wordmove(void*, const void*, unsigned);
+
+extern TUint32 random(TUint32* aSeed);
+extern void setup_block(TUint32* aBlock, TInt aNumWords);
+extern TBool verify_block(const TUint32* aBlock, TInt aNumWords);
+extern TBool verify_block_no_trace(const TUint32* aBlock, TInt aNumWords);
+extern void setup_block_cpu(TUint32* aBlock, TInt aNumWords);
+extern TInt verify_block_cpu_no_trace(const TUint32* aBlock, TInt aNumWords);
+
+extern TUint64 fast_counter();
+extern TUint64 fast_counter_freq();
+extern TUint32 norm_fast_counter(); // normalised to count between 1-2MHz
+extern TUint32 norm_fast_counter_freq(); // normalised to count between 1-2MHz
+extern void init_fast_counter();
+extern TInt __microseconds_to_fast_counter(TInt us);
+extern TInt __microseconds_to_norm_fast_counter(TInt us);
+
+extern void DumpMemory(const char* msg, const void* data, int length);
+}
+
+#define TEST_PRINT(s) \
+ DEBUGPRINT("NKTEST: " s)
+#define TEST_PRINT1(s, a) \
+ DEBUGPRINT("NKTEST: " s, a)
+#define TEST_PRINT2(s, a, b) \
+ DEBUGPRINT("NKTEST: " s, a, b)
+#define TEST_PRINT3(s, a, b, c) \
+ DEBUGPRINT("NKTEST: " s, a, b, c)
+#define TEST_PRINT4(s, a, b, c, d) \
+ DEBUGPRINT("NKTEST: " s, a, b, c, d)
+#define TEST_PRINT5(s, a, b, c, d, e) \
+ DEBUGPRINT("NKTEST: " s, a, b, c, d, e)
+#define TEST_PRINT6(s, a, b, c, d, e, f) \
+ DEBUGPRINT("NKTEST: " s, a, b, c, d, e, f)
+#define TEST_PRINT7(s, a, b, c, d, e, f, g) \
+ DEBUGPRINT("NKTEST: " s, a, b, c, d, e, f, g)
+#define TRACE_LINE() \
+ DEBUGPRINT("NKTEST: line %d", __LINE__)
+
+#define TEST_RESULT(x, s) \
+ do { if (!(x)) {DEBUGPRINT("NKTEST: " s); DEBUGPRINT("Line %d File %s", __LINE__, __FILE__);}} while(0)
+#define TEST_RESULT1(x, s, a) \
+ do { if (!(x)) {DEBUGPRINT("NKTEST: " s, a); DEBUGPRINT("Line %d File %s", __LINE__, __FILE__);}} while(0)
+#define TEST_RESULT2(x, s, a, b) \
+ do { if (!(x)) {DEBUGPRINT("NKTEST: " s, a, b); DEBUGPRINT("Line %d File %s", __LINE__, __FILE__);}} while(0)
+#define TEST_RESULT3(x, s, a, b, c) \
+ do { if (!(x)) {DEBUGPRINT("NKTEST: " s, a, b, c); DEBUGPRINT("Line %d File %s", __LINE__, __FILE__);}} while(0)
+#define TEST_RESULT4(x, s, a, b, c, d) \
+ do { if (!(x)) {DEBUGPRINT("NKTEST: " s, a, b, c, d); DEBUGPRINT("Line %d File %s", __LINE__, __FILE__);}} while(0)
+
+#define TEST_OOM(p) TEST_RESULT(p, "Out of memory");
+
+#define RANGE_CHECK(l,x,h) ((l)<=(x) && (x)<=(h))
+
+#ifdef __SMP__
+#define for_each_cpu(cpu) \
+for((cpu)=0; (cpu)<NKern::NumberOfCpus(); ++(cpu))
+#else
+#define for_each_cpu(cpu) \
+ for((cpu)=0; (cpu)<1; ++(cpu))
+#endif
+
+class CircBuf
+ {
+public:
+ static CircBuf* New(TInt aSlots);
+ CircBuf();
+ ~CircBuf();
+ TInt TryGet(TUint32& aOut);
+ TInt TryPut(TUint32 aIn);
+ TUint32 Get();
+ void Put(TUint32 aIn);
+ void Reset();
+ TInt Count();
+public:
+ TUint32* iBufBase;
+ TInt iSlotCount;
+ TInt iGetIndex;
+ TInt iPutIndex;
+ TSpinLock iLock;
+ };
+
+#endif
+
+