MMP Tutorial

This tutorial describes how to set the paging options for an individual executable.

The paging options are:

  • code paging
  • data paging
  • both code and data paging

Making executables (either exe or dll) paged is the finest level of control of paging at runtime. In the order of precedence for paging keywords, the values in this file will be overridden by those in the oby file.

The following keywords are used to indicate whether the executable is unpaged or paged. If the executable is paged then the keywords indicate if code paging, data paging or both are to be used.

Keyword

Behaviour on Symbion OS v9.6 and later

paged

Enables code and data paging

unpaged

Disables code and data paging

pagedcode

Enables code paging

unpagedcode

Disables code paging

pageddata

Enables data paging

unpageddata

Disables data paging

When using the above keywords, the following points must be considered.

  • The keywords pageddata and unpageddata do not make sense for files that are not executable binaries, and will be ignored.
  • The use of the paged, unpaged, pagedcode and unpagedcode keywords only states the default paging behaviour of the data that is to paged by the executable. The behaviour can be overridden by using the TChunkCreateInfo, RChunk and TChunkHeapCreateInfo API.
  • The keywords in the table above, should appear on a separate line on their own and with no arguments
  • If the build tools are configured to compress executables while building them (this is the default behaviour), then executables marked with paged or the pagedcode keyword will be implicitly byte-pair compressed.
  • If a ROM/ROFS partition defines a pagingoverride, codepagingoverride or datapagingoverride as defaultpaged or defaultunpaged, then the pagability specified in the mmp file will be implemented.
  • If a ROM/ROFS partition has defines pagingoverride, codepagingoverride or datapagingoverride as nopaging or alwayspage, then the pagability specified in the mmp file will be ignored.

Building the executable with the new keyword does not produce any errors or warnings.

mmp file example

Below is an example mmp file with paging:

TARGET dummy.dll 
TARGETTYPE DLL 

UID 0x10003d3a 
VENDORID 0x12345678 

SOURCEPATH ../dummy 
SOURCE dummy1.cpp dummy2.cpp 

SYSTEMINCLUDE /epoc32/include 

LIBRARY euser.lib 

CAPABILITY PowerMgmt ReadDeviceData WriteDeviceData LocalServices ReadUserData WriteUserData 

UNPAGED

The above mmp file, specifies that the dummy.dll file is not going to use demand paging.