kernel/eka/debug/crashMonitor/inc/scmdatasave.h
changeset 296 94f2adf59133
parent 293 0659d0e1a03c
child 297 b2826f67641f
--- 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*/