Difference between revisions of "GeneveOS Memory Management Functions"
Jump to navigation
Jump to search
| Line 1: | Line 1: | ||
Memory management in MDOS is available via XOP 7. | Memory management in MDOS is available via XOP 7. In the MDOS sources the relevant files are ''manage2s'' and ''manage2t''. | ||
== General purpose XOPs == | == General purpose XOPs == | ||
Error codes: | |||
{| class="plainc" | |||
! Code | |||
! Meaning | |||
|- | |||
| 00 | |||
| No error | |||
|- | |||
| 01 | |||
| not enough free pages | |||
|- | |||
| 02 | |||
| can't remap execution page zero | |||
|- | |||
| 03 | |||
| no page at LOCAL address | |||
|- | |||
| 04 | |||
| user area not large enough for list | |||
|- | |||
| 05 | |||
| shared type already defined | |||
|- | |||
| 06 | |||
| shared type doesn't exist | |||
|- | |||
| 07 | |||
| can't overlay shared and private memory | |||
|- | |||
| 08 | |||
| out of table space | |||
|- | |||
|} | |||
=== Return number of free pages in system === | === Return number of free pages in system === | ||
| Line 20: | Line 55: | ||
| R2 | | R2 | ||
| || Number of fast free pages | | || Number of fast free pages | ||
|- | |||
| R3 | |||
| || Total number of pages in system | |||
|- | |- | ||
|} | |} | ||
Revision as of 14:54, 11 November 2011
Memory management in MDOS is available via XOP 7. In the MDOS sources the relevant files are manage2s and manage2t.
General purpose XOPs
Error codes:
| Code | Meaning |
|---|---|
| 00 | No error |
| 01 | not enough free pages |
| 02 | can't remap execution page zero |
| 03 | no page at LOCAL address |
| 04 | user area not large enough for list |
| 05 | shared type already defined |
| 06 | shared type doesn't exist |
| 07 | can't overlay shared and private memory |
| 08 | out of table space |
Return number of free pages in system
Opcode: 0
| Input | Output | |
|---|---|---|
| R0 | Opcode (0000) | Error code (always 0) |
| R1 | Number of free pages | |
| R2 | Number of fast free pages | |
| R3 | Total number of pages in system |
Claim pages into local map from free pages
Opcode: 1
| Input | Output | |
|---|---|---|
| R0 | Opcode (0001) | Error code |
| R1 | Number of pages | Number of pages actually fetched to complete map as required |
| R2 | Local page address | Number of fast pages fetched |
| R3 | Speed flag (if not 0, only fast) |
Return pages into free pool from local map
Opcode: 2
| Input | Output | |
|---|---|---|
| R0 | Opcode (0002) | Error code |
| R1 | Number of pages | |
| R2 | Local page address |
Map local page at excution page
Opcode: 3
| Input | Output | |
|---|---|---|
| R0 | Opcode (0003) | Error code |
| R1 | Local page number | |
| R2 | Execution page number |
Get address map
Opcode: 4
| Input | Output | |
|---|---|---|
| R0 | Opcode (0004) | Error code |
| R1 | Pointer to buffer | Count of pages reported |
| R2 | Size of area for map |
Opcode: 5
| Input | Output | |
|---|---|---|
| R0 | Opcode (0005) | Error code |
| R1 | Number of pages to declare as shared | |
| R2 | Local page address | |
| R3 | Type to be assigned to shared pages |
Opcode: 6
| Input | Output | |
|---|---|---|
| R0 | Opcode (0006) | Error code |
| R1 | Type |
Also have to check their current execution map
Opcode: 7
| Input | Output | |
|---|---|---|
| R0 | Opcode (0007) | Error code |
| R1 | Type | |
| R2 | Local page number for start of shared area |
Opcode: 8
| Input | Output | |
|---|---|---|
| R0 | Opcode (0008) | Error code |
| R1 | Type | Number of pages in shared group |
Privileged XOPs (only available for operating system)
Release task
Opcode: 9
| Input | Output | |
|---|---|---|
| R0 | Opcode (0009) |
Task header at >8000
Page get
Opcode: 10
| Input | Output | |
|---|---|---|
| R0 | Opcode (000A) | Error code |
| R1 | Page number to get (if high byte not 0, get first available) | Pointer to node |
| R2 | Speed flag (if not 0, only fast) | Page number from node |
Add page to free pages in system
Opcode: 11
| Input | Output | |
|---|---|---|
| R0 | Opcode (000B) | Error code (if no free nodes available) |
| R1 | Page number | Pointer to node |
Add a node to the list of free nodes
Opcode: 12
| Input | Output | |
|---|---|---|
| R0 | Opcode (000C) | Error code (always 0000) |
| R1 | Pointer to node |
Link a node to the specified node
Opcode: 13
| Input | Output | |
|---|---|---|
| R0 | Opcode (000D) | Error code (always 0000) |
| R1 | Pointer to node | |
| R2 | Pointer to node to link to |
Get address map (system)
Opcode: 14
| Input | Output | |
|---|---|---|
| R0 | Opcode (000E) | Count of valid pages |