diff -r 0659d0e1a03c -r 94f2adf59133 kernel/eka/debug/crashMonitor/inc/scmdatasave.h --- 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 -#include -#include -#include -#include - -#include -#include -#include - -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*/