Kernel Objects and Containers Information Commands

Describes how to use the c and o commands to get information about kernel objects.

Kernel objects

Kernel objects such as DProcess, DThread, DSemaphore, DChunk are all instances of classes derived from DObject.

To show basic information about a DObject, use the o command.

To show more detail, use the O command.

As an example, use these commands to show information about a DProcess object whose address is shown using the i command:

...
TheCurrentDataSectionProcess=6403bb4c
...

o 6403bb4c

This gives:

.o 6403bb4c
PROCESS at 6403bb4c VPTR=f8046c78 AccessCount=6 Owner=00000000
Full name crash

All objects derived from DBase have a virtual table pointer, access count, owner and name. Using the O command on this address would you give you the full process information.

You can use o to examine other types of objects, for example chunks. The thread information for the current data section process shows two chunks:

NumChunks=2
0: Chunk 6403c044, run 00400000, access count 1
1: Chunk 64039688, run 00600000, access count 1

Using the o command on the first of these chunk objects gives you the basic information:

.o 6403c044
CHUNK at 6403c044 VPTR=f8046b50 AccessCount=1 Owner=6403bb4c
Full name crash::$DAT

Using the O command gives you more detailed information:

.q 6403c044
CHUNK at 6403c044 VPTR=f8046b50 AccessCount=1 Owner=6403bb4c
Full name crash::$DAT
Owning Process 6403bb4c
Size 2000, MaxSize 200000, Base 00400000
Attrib 6, StartPos 0
Type 6, State 2, Home Base 68900000
Home Region Offset 00000000
Home Region Base 68900000
Home Region Size 00100000
PTE: 0000055e, PDE: 00000021 00000001 00000001
NumPdes=1, iPdes=61000010, iHomePdes=61001a24
PdeBitMap=00000001, PageBitMap=6403c0c8
Domain -1

The information displayed is memory model dependent. It is shown here for the moving memory model.

Notes:

  • Size 2000, MaxSize 200000, Base 00400000

    The Size field shows the current size of the chunk, in bytes.

    The MaxSize field shows the maximum size of the chunk, in bytes.

    The Base field shows the base address in the run region.

  • Attrib 6, StartPos 0

    The Attrib field shows the attributes of the chunk.

    The StartPos field shows the offset, in bytes, between the base address and the start of the committed area. This is non-zero for double-ended chunks only.

  • Type 6, State 2, Home Base 68900000

    The Type field shows the type of chunk. This corresponds to a TChunkType enum value.

    The State field shows the current state of the chunk. This corresponds to a TChunkState enum value, which is itself defined within the scope of the Symbian platform internal class DMemModelChunk.

    The Home Base field is the base address of the chunk in the home region.

  • Home Region Offset 00000000
    Home Region Base 68900000
    Home Region Size 00100000
    

    These three lines show the offset, base address and size (the reserved size) of the chunk in the home region.

Kernel containers

Internally, the kernel maintains lists of all current objects, organized by type. Each list is a container, a DObjectCon object, with one for each object type.

The c command will walk through all objects in a given list. The type of object is identified by appending a number after the command. For example, DProcess objects are identified by the number 1, so to walk through all current DProcess objects type:

c1

The command effectively executes a O command on each object in the "processes" container.