h6. [[OS_DynamicArea]] h6(. » [[Dynamic Area Handler Code]] h6((. » Dynamic Area ResizePMP |_<^{width:3em}. Entry | | |<^. R0 |<^. 6 (handler reason) | |<^. R1 |<^. Requested change amount (signed page count) | |<^. R2 |<^. Dynamic area number | |<^. R12 |<^. Workspace pointer passed to [[OS_DynamicArea 0]] or base of area| |_<^{width:3em}. Exit | | |\2<^. All registers preserved | |\2<^. V set to report an error: R0 must be a pointer to an error block, or 0 for a generic error | h4. Use When [[OS_ChangeDynamicArea]] is called on a [[Physical Memory Pool]], the kernel will call this entry point in order to allow the PMP to perform the grow/shrink operation itself. The routine is expected to grow/shrink the physical size of the PMP (via [[OS_DynamicArea 21]]) by the requested number of pages; on exit from the routine the kernel will calculate the R1 return value for OS_ChangeDynamicArea by looking at how much the physical size of the PMP has changed (i.e. by looking at the R6 value of [[OS_DynamicArea 24]]). If a PMP does not want to support resizing via [[OS_ChangeDynamicArea]] then it can simply return with an error. For this case it's also recommended that the "Area may not be dragged by user" flag is set (bit 7). h4. See also * [[Dynamic Area Handler Code]] * [[Physical Memory Pool]] * [[OS_DynamicArea]]