diff -r 000000000000 -r 96e5fb8b040d kernel/eka/debug/crashMonitor/inc/scmconfig.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/kernel/eka/debug/crashMonitor/inc/scmconfig.h Thu Dec 17 09:24:54 2009 +0200 @@ -0,0 +1,92 @@ + +// 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: +// +// 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. +// + +/** + @file + @internalTechnology +*/ +#ifndef __SCMCONFIG_H_INCLUDED__ +#define __SCMCONFIG_H_INCLUDED__ + + +#include + +#include +#include + +namespace Debug{ + + //Note -- Changing the size of this requires a change in KScmConfigMaxSize + _LIT8(KScmConfigHeaderString, "SCMCONFIG"); + + /** + * This class handles the configuration section of the crash partition. + * It is responsible for reading and writing it + */ + class SCMConfiguration : public MByteStreamSerializable + { + + public: + + //The 9 here refers to the size of KScmConfigHeaderString which is serialised + static const TInt KScmConfigMaxSize = TConfigItem::ELast * sizeof(TConfigItem) + 9; + + SCMConfiguration(); + virtual ~SCMConfiguration(); + + // from MByteStreamSerializable + virtual TInt Serialize(TByteStreamWriter& aWriter); + virtual TInt Deserialize(TByteStreamReader& aReader); + virtual TInt GetSize() const; + + TConfigItem* GetNextItem(); + TInt SetDefaultConfig(); + + TInt CreateConfigItem(const TConfigItem::TSCMDataType aDataType, const TUint8 aPriority, const TInt32 aSizeToDump); + TInt ModifyConfigItemPriority(const TConfigItem::TSCMDataType aDataType, const TUint8 aPriority); + + void ResetToHighestPriority(); + + TBool operator == (const SCMConfiguration& aOther) const; + + TConfigItem* ConfigList() const; + TInt InsertToList(TConfigItem* aItem); + void ClearList(); + + private: + + /** + * This is an ordered linked list of TConfigItems. The first is the highest priority and so on until the lowest priority + */ + TConfigItem* iConfigList; + + /** + * Everytime GetNextItemToDump is called this moves down along the list + */ + TConfigItem* iNextItem; + + private: + TInt RemoveFromList(TConfigItem* aItem); + + + }; + } + +#endif /*__SCMCONFIG_H_INCLUDED__*/