Dynamic Areas



Domain-based dynamic areas

From version 8.20 of the Kernel, it is possible to create a dynamic area using an ARM Domain. Domain numbers are allocated dynamically by the Kernel. Dynamic areas created in this way can be made inaccessible to the rest of the operating system. This may be useful to provide memory protection on certain administrative data. In conjunction with the Abort-Trapping flags introduced in the preceding version, this may be used to provide notifications of accesses to external memory.

To create a Domain-based dynamic area, bit 17 on the Dynamic Area flags should be set. Domain based dynamic areas will be limited in size and allocation in a slightly different manner to other dynamic areas :

  • They will always be aligned to a megabyte boundary (in logical memory)
  • They will always have a maximum size aligned to a megabyte boundary

Because of these requirements, use of many Domain dynamic areas will result in much faster consumption of logical address space. They should be used with care.

The ARM processors support 16 domains. Domain 0 is used by RISC OS for 'regular' memory access. Domain 1-13 will be allocated dynamically by the operating system. Domains 14 and 15 are reserved for internal use. Because of this limitation, only 13 Domain areas can be created at any one time. The limited utility of this interface means that this restriction should not be significant. Clients are expected to function where a domain could not be allocated. If a domain could not be allocated by the Operating system the flags returned from OS_DynamicArea will have bit 17 clear. Clients which cannot function without the support of the Domains should report an error.

An additional interface is available for clients using the Domain interface. This may change in the future.

OS_DynamicArea 19
On entry
   R0 = DynArea_DomainState (19)
   R1 = dynamic area number
   R2 = state:
         0 = abort all accesses ('no access')
         1 = normal access ('client')
         2 = reserved, must not be used
         3 = access permissions ignored ('manager')
        -1 = read state
On exit
   R2 = old state

This SWI call is used to change the access of Domain dynamic areas to aborting, or to allow full access. This interface is of limited usefulness, but is provided for specific clients which require access to the domains system under the operating system's control.

Under current versions of the operating system, 'manager' mode is unreliable and should not be used.

This documentation is copyright 3QD Developments Ltd 2013 and may not be reproduced or published in any form without the copyright holders permission. RISC OS is subject to continuous development and improvement as such all information is reproduced by 3QD Developments Ltd in good faith and is believed to be correct at the time of publication E&OE. 3QD Developments Ltd cannot accept any liability for any loss or damage arising from the use of any information provided as part of the RISC OS Documentation.

HTML document version 1.03 3rd November 2015