Fixed page dynamic areas
Fixed page dynamic areas are an extension of the 'Needs specific pages' flag (bit 19) on OS_DynamicArea 0 (Create). For certain applications it is necessary to directly access hardware or certain given page numbers. Where this is the case and no system-provided mapping is available it is possible to create a dynamic area which can be used to access the pages by supplying a Dynamic Area Handler routine. However, for the vast majority of cases the routine will specify a fixed set of pages for the dynamic area to grow into. This is where the 'Needs Fixed Pages' flag is useful.
Instead of providing a dynamic area handler routine the list of pages which are required for the dynamic area can be supplied as the workspace parameter on dynamic area creation, together with the 'Needs Fixed Pages' flag. The list of pages takes the same form as that used by the Dynamic Area Handler routines :
+0 page number (only when the 'Physical Mapping' flag is unset)
+4 logical address (ignored)
+8 physical address (only when the 'Physical Mapping' flag is set)
Fixed page dynamic areas will always occupy the maximum extent of the dynamic area and sufficient pages should be provided within the workspace parameter to create the dynamic area. The page block is not required after the dynamic area has been created. Fixed page dynamic areas may not be :
- Abortable
- Heap
- Sparse
- Shrinkable
It is recommended that they be locked and 'not user draggable' if clients do not wish the areas to be resized by user operations.
|