Showing changes from revision #0 to #1:
Added | Removed | Changed
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 |
Exit | |
---|---|
All registers preserved | |
V set to report an error: R0 must be a pointer to an error block, or 0 for a generic error |
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).