Difference between revisions of "GeneveOS Memory Management Functions"
Jump to navigation
Jump to search
Line 115: | Line 115: | ||
opcode #E, get address map (system) | opcode #E, get address map (system) | ||
return: R0= count of valid pages | return: R0= count of valid pages | ||
[[Category:Geneve]] | |||
[[Category:MDOS]] | |||
[[Category:Programming]] |
Revision as of 12:55, 11 November 2011
Memory management in MDOS is available via XOP 7.
General purpose XOPs
Return number of free pages in system
opcode #0, return number of free pages in system after return: r0=ERROR CODE (always zero) r1=number of free pages r2=number of fast free pages
Claim pages into local map from free pages
opcode #1, claim pages into local map from free pages pass: r1=number of pages r2=local page address r3=speed flag <>0 means FAST return: r0=error code r1=number of pages actually fetched to complete map as required r2=number of fast pages fetched
Return pages into free pool from local map
opcode #2, return pages into free pool from local map pass: r1=number of pages r2=local page address return: r0=error code
Map local page at excution page
opcode #3, map local page at excution page pass: r1=local page number r2=execution page number return: r0=error code
Get address map
opcode #4, get address map pass: r1=execution address r2=size of area for map return: r0=error code r1=count of pages reported
opcode #5, declare shared pages pass: r1=number of pages to declare as shared r2=local page address r3=type to be assigned to shared pages return: r0=error code
opcode #6, release shared pages (type) pass: r1=type return: r0=error code also have to check their current execution map
opcode #7, get shared pages pass: r1=type r2=local page number for start of shared area return: r0=error code
opcode #8, return size of shared page group pass: r1=type return: r0=error code r1=number of pages in shared group
Privileged XOPs (only available for operating system)
Release task
opcode #9 : release task in: nil (task header at >8000) out: nil
Page get
opcode #A : page get in: r0=>000A r1=page number to get, if r1h <> 0, get first available r2=speed flag <>0 means fast out: r0=error code r1=pointer to node r2=page number from node
Add page to free pages in system
opcode #B : add page to free pages in system in: r0=>000B r1=page number out: r0= error if no free nodes available
Add a node to the list of free nodes
opcode #C : add a node to the list of free nodes in: r0=>000C r1=pointer to node out: no errors
Link a node to the specified node
opcode #D : link a node to the specified node in: r0=>000D r1=pointer to node r2=pointer to node to link to out: no errors
Get address map (system)
opcode #E, get address map (system) return: R0= count of valid pages