--- a/kernel/eka/debug/crashMonitor/inc/scmdatasave.h Wed Oct 20 13:58:28 2010 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,193 +0,0 @@
-// 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:
-// e32\include\kernel\scmdatasave.h
-// Kernel System crash data save header file
-//
-// WARNING: This file contains some APIs which are internal and are subject
-// to change without notice. Such APIs should therefore not be used
-// outside the Kernel and Hardware Services package.
-//
-
-#ifndef SCMDATASAVE_H
-#define SCMDATASAVE_H
-
-/**
- @file
- @internalComponent
- */
-
-#include <plat_priv.h>
-#include <kernel/monitor.h>
-#include <e32des8.h>
-#include <arm.h>
-#include <crashflash.h>
-
-#include <scmdatatypes.h>
-#include <scmbytestreamutil.h>
-#include <scmconfig.h>
-
-using namespace Debug;
-
-IMPORT_C TInt64 CrashTime();
-
-
-_LIT8(KKernelHeapChunkName, "ekern.exe::SvHeap");
-_LIT8(KKernelProcessName, "ekern.exe");
-
-
-/**
- * This class handles gathering of the kernel data and writing it to flash
- *
- */
-class SCMDataSave : MPhysicalWriterImpl
- {
- public:
- enum TRegisterSetType
- {
- EUserRegisters = 0,
- ESupervisorRegisters = 1,
- EFullCPURegisters = 2,
- ERegSetNone = 3,
- ERegLast
- };
-
- enum TStackType
- {
- EUsrStack = 0,
- ESvrStack = 1,
- EStackTypeNone = 2,
- EStackLast
- };
-
- enum TDumpScope
- {
- EThreadSpecific = 0,
- EProcessSpecific = 1,
- ESystemWide = 2,
- EDumpLast
- };
-
- /**
- * This structure defines the type of data we wish to dump for a given kernel object
- */
- struct TDataToDump
- {
- TBool iMetaData; /**< Dump meta data about object */
- TBool iCodeSegs; /**< Dump DProcess code segs (ignored for other objects) */
- TStackType iStk; /**< Dump this stack type */
- TRegisterSetType iReg; /**< Dump this register set */
-
- TDataToDump()
- {
- //upon construction, nothing is set to be dumped
- iMetaData = EFalse;
- iCodeSegs = EFalse;
- iStk = EStackTypeNone;
- iReg = ERegSetNone;
- }
-
- };
-
- enum TWriteSelect
- {
- EWriteFlash = 0, /**< write data to flash */
- EWriteComm =1, /**< write data to comm port */
- ELast
- };
-
- public:
-
- IMPORT_C SCMDataSave(Monitor* aMonitor, CrashFlash* aFlash);
- virtual ~SCMDataSave();
-
-
- TInt LogCrashHeader(const TDesC8& aCategory, TInt aReason, TInt aCrashId, TUint& aSizeDumped);
- TInt LogThreadData(DThread* aThread, TUint& aSizeDumped);
- TInt LogProcessData(DProcess* aProcess, TUint& aSizeDumped);
- TInt LogCodeSegments(DProcess* aProcess, TUint& aSizeDumped);
-
- TInt LogThreadUserStack(DThread* aThread, TBool aFullStack, TUint& aSizeDumped);
- TInt LogThreadSupervisorStack(DThread* aThread, TBool aFullStack, TUint& aSizeDumped);
-
- TInt LogRegisters(DThread* aThread, const TRegisterSetType& aRegType, TUint& aSizeDumped);
- TInt LogCPURegisters(TUint& aSizeDumped);
- TInt ReadUserRegisters(DThread* aThread, TArmRegSet& aRegs, TUint32& aAvailableRegs);
- TInt ReadSystemRegisters(DThread* aThread, TArmRegSet& aRegs, TUint32& aAvailableRegs);
- void ReadCPURegisters(SFullArmRegSet& aRegs);
-
- TInt LogMemory(const TUint8* aStartAddress, TInt aLength, const DThread* aThread, TUint& aSizeDumped);
- TInt LogExceptionStacks(TUint& aSizeDumped);
- TInt LogTraceBuffer(TInt aSizeToDump, TUint& aSizeDumped);
- TInt LogLocks(TUint& aSizeDumped);
- TInt LogRawData(const TDesC8& aData, TUint& aSizeDumped);
- TInt LogVariantSpecificData(TUint& aSizeDumped);
- TInt LogRomInfo(TUint& aSizeDumped);
-
- TInt LogKernelHeap(TUint& aSizeDumped);
- TInt FindKernelHeap(TInt32& aHeapLocation, TInt32& aHeapSize);
-
- TInt LogConfig(SCMConfiguration& aConfig);
- TInt ReadConfig(SCMConfiguration& aScmConfig);
-
-
- void Write(const TAny* aSomething, TInt aSize);
- static void WriteUart(const TUint8* aData, TInt aSize);
- static void WriteUart(const TDesC8& aDes);
- virtual void DoPhysicalWrite(TAny* aData, TInt aPos, TInt aLen);
-
- void WriteCrashFlash(TInt aPos, TInt& aSize, const TDesC8& aBuffer);
-
- TInt GetRegisterType(const TRegisterSetType& aSetType, TInt32& aRegNumber, TUint32& aRegisterType);
- TInt GetByteCount();
- void SetByteCount(TInt aByte);
-
-
- TWriteSelect GetWriteSelect();
- void SetWriteSelect(TWriteSelect aWriteSelect);
-
- TUint SpaceRemaining();
- TUint MaxLogSize();
-
- void SetCrashStartingPoint(TUint32 aStart);
- TUint32 GetCrashStartingPoint() {return iStartingPointForCrash;}
-
- public:
-
- /** Offsets header to assist parsing */
- TCrashOffsetsHeader iHdr;
-
- /** Basic crash info */
- TCrashInfoHeader iCrashInf;
-
- /** Writer for physical writing */
- TCachedByteStreamWriter* iWriter;
-
- private:
- Monitor* iMonitor; //need to use this to map memory and things like that
- CrashFlash* iFlash;
- TTraceDump iTrace;
-
- TInt iByteCount;
-
- //This is a pointer to memory on the heap we can use that is the same size as iFlash.GetFlashBlockSize()
- HBuf8* iFlashCache;
-
- TWriteSelect iWriteSelect;
- TBool iPerformChecksum;
- TScmChecksum iChecksum;
-
- TUint32 iStartingPointForCrash;
- };
-
-#endif /*SCMDATASAVE_H*/