kerneltest/e32test/device/d_ldd2.cpp
changeset 0 a41df078684a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32test/device/d_ldd2.cpp	Mon Oct 19 15:55:17 2009 +0100
@@ -0,0 +1,140 @@
+// Copyright (c) 2008-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\device\d_ldd2.cpp
+// Secondary LDD for testing linking one driver to another
+// 
+//
+
+#include <kernel/kernel.h>
+#include "d_ldd2.h"
+
+TInt AFunction()
+	{
+	return KErrNone;
+	}
+
+TInt data=0x100;
+TAny* dataptr=(TAny*)&AFunction;
+TInt TheBss;
+
+class TGlobal
+	{
+public:
+	TGlobal();
+	~TGlobal();
+	void Update(TUint32 a);
+	TInt Verify();
+public:
+	TUint32 iInt;
+	TAny* iPtr;
+	};
+
+TGlobal Global;
+
+TGlobal::TGlobal()
+	{
+	__KTRACE_OPT(KDEVICE,Kern::Printf("TGlobal::TGlobal()"));
+	iPtr = Kern::Alloc(65536);
+	Update(487);
+	}
+
+TGlobal::~TGlobal()
+	{
+	__KTRACE_OPT(KDEVICE,Kern::Printf("TGlobal::~TGlobal()"));
+	Kern::Free(iPtr);
+	}
+
+void TGlobal::Update(TUint32 a)
+	{
+	iInt = a;
+	if (iPtr)
+		{
+		TUint32* p = (TUint32*)iPtr;
+		TUint32* pE = p + 65536/4;
+		while (p<pE)
+			{
+			a = (a*69069u)+41;
+			*p++ = a;
+			}
+		}
+	}
+
+TInt TGlobal::Verify()
+	{
+	TUint32 x = iInt;
+	if (iPtr)
+		{
+		TUint32* p = (TUint32*)iPtr;
+		TUint32* pE = p + 65536/4;
+		while (p<pE)
+			{
+			x = (x*69069u)+41;
+			if (*p++ != x)
+				return KErrGeneral;
+			}
+		return KErrNone;
+		}
+	return KErrNoMemory;
+	}
+
+EXPORT_C TInt LinkedTest1()
+	{
+	return (TInt)dataptr;
+	}
+
+EXPORT_C TInt LinkedTest2()
+	{
+	return data++;
+	}
+
+EXPORT_C TInt LinkedTest3()
+	{
+	return data--;
+	}
+
+EXPORT_C TInt LinkedTest4()
+	{
+	return data;
+	}
+
+EXPORT_C TInt LinkedTest5()
+	{
+	return TheBss;
+	}
+
+EXPORT_C TInt LinkedTest6(TInt aValue)
+	{
+	TheBss = aValue;
+	return KErrNone;
+	}
+
+EXPORT_C TUint32 LinkedTest7()
+	{
+	return (TInt)Global.iInt;
+	}
+
+EXPORT_C void LinkedTest8(TUint32 aValue)
+	{
+	Global.Update(aValue);
+	}
+
+EXPORT_C TInt LinkedTest9()
+	{
+	return Global.Verify();
+	}
+
+DECLARE_STANDARD_LDD()
+	{
+	return NULL;
+	}