crashanalysercmd/Libraries/Engine/CrashDebuggerLib/Structures/Chunk/DChunk.cs
author Matti Laitinen <matti.t.laitinen@nokia.com>
Thu, 11 Feb 2010 15:50:58 +0200
changeset 0 818e61de6cd1
permissions -rw-r--r--
Add initial version of Crash Analyser cmdline under EPL

/*
* Copyright (c) 2004-2008 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "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: 
*
*/

using System;
using System.Collections.Generic;
using System.Text;
using CrashDebuggerLib.Structures.KernelObjects;
using CrashDebuggerLib.Structures.Common;
using CrashDebuggerLib.Structures.Process;

namespace CrashDebuggerLib.Structures.Chunk
{
    public class DChunk : DObject
    {
        #region Enumerations
        [System.ComponentModel.TypeConverter( typeof( SymbianParserLib.TypeConverters.SymbianEnumConverter ) )]
        public enum TChunkType
        {
            EUnknown = -1,

            // these never change or move or anything
            EKernelData = 0,	// Supervisor,Rw,Cacheable
            EKernelStack = 1,	// Supervisor,Rw,Cacheable
            EKernelCode = 2,	// Supervisor,Rw,Cacheable
            EDll = 3,			// User,Ro,Cacheable
            EUserCode = 4,

            // This changes on a PDE basis when the file server runs
            ERamDrive = 5,		// Supervisor,Rw,Cacheable

            // these change on PDE basis when run
            EUserData = 6,
            EDllData = 7,
            EUserSelfModCode = 8,

            ESharedKernelSingle = 9,		// Must be same value as TChunkCreateInfo::ESharedKernelSingle
            ESharedKernelMultiple = 10,		// Must be same value as TChunkCreateInfo::ESharedKernelMultiple

            ESharedIo = 11,
            ESharedKernelMirror = 12,
        }

        [Flags, System.ComponentModel.TypeConverter( typeof( SymbianParserLib.TypeConverters.SymbianEnumConverter ) )]
        public enum TChunkAttributes : uint
        {
            // Basic range
            //ENormal             = 0x00000000, // Commented out because it conflicts with EAddressLocal
            EDoubleEnded        = 0x00000001,
            EDisconnected       = 0x00000002,
            EConstructed        = 0x00000004,
		    EMemoryNotOwned     = 0x00000008,

            // From Multiple Memory Model
            EPrivate			= 0x80000000,
		    ECode				= 0x40000000,
		    EAddressAllocDown	= 0x20000000,

		    EAddressLocal		= 0x00000000,
		    EAddressShared		= 0x01000000,
		    EAddressUserGlobal	= 0x02000000,
		    EAddressKernel		= 0x03000000,
		    EAddressFixed		= 0x04000000,

		    EMapTypeMask		= 0x00c00000,
		    EMapTypeLocal		= 0x00000000,
		    EMapTypeGlobal		= 0x00400000,
		    EMapTypeShared		= 0x00800000,
        }
        #endregion

        #region Constructors
        public DChunk( CrashDebuggerInfo aCrashDebugger )
            : base( aCrashDebugger, TObjectType.EChunk )
        {
        }
        #endregion

        #region API
        #endregion

        #region Properties
        public uint OwningProcessAddress
        {
            get { return iOwningProcessAddress; }
            set { iOwningProcessAddress = value; }
        }

        public DProcess OwningProcess
        {
            get { return CrashDebugger.ProcessByAddress( OwningProcessAddress ); }
        }

        public uint OSAsids
        {
            get { return iOsAsids; }
            set { iOsAsids = value; }
        }

        public uint Size
        {
            get { return iSize; }
            set { iSize = value; }
        }

        public uint MaxSize
        {
            get { return iMaxSize; }
            set { iMaxSize = value; }
        }

        public uint Base
        {
            get { return iBase; }
            set { iBase = value; }
        }

        public TChunkAttributes Attributes
        {
            get { return iAttributes; }
            set { iAttributes = value; }
        }

        public uint StartPos
        {
            get { return iStartPos; }
            set { iStartPos = value; }
        }

        public TChunkType ChunkType
        {
            get { return iChunkType; }
            set { iChunkType = value; }
        }

        public ChunkPermissions Permissions
        {
            get { return iPermissions; }
        }

        public uint PageTables
        {
            get { return iPageTables; }
            set { iPageTables = value; }
        }

        public uint PageBitMap
        {
            get { return iPageBitMap; }
            set { iPageBitMap = value; }
        }
        #endregion

        #region Internal methods
        #endregion

        #region Internal constants
        #endregion

        #region From System.Object
        public override string ToString()
        {
            return base.ToString();
        }
        #endregion

        #region Data members
        private uint iOwningProcessAddress = 0;
        private uint iOsAsids = 0;
        private uint iSize = 0;
        private uint iMaxSize = 0;
        private uint iBase = 0;
        private TChunkAttributes iAttributes = TChunkAttributes.EAddressLocal;
        private uint iStartPos = 0;
        private TChunkType iChunkType = TChunkType.EUnknown;
        private ChunkPermissions iPermissions = new ChunkPermissions();
        private uint iPageTables = 0;
        private uint iPageBitMap = 0;
        #endregion
    }
}