forked from koniifer/ableos
Starting to spec out the interface with the kernel
This commit is contained in:
parent
38986193ca
commit
d21654dd4b
58
sysdata/spec/Memory service spec.md
Normal file
58
sysdata/spec/Memory service spec.md
Normal file
|
@ -0,0 +1,58 @@
|
|||
# Memory service spec
|
||||
The memory service uses the first byte in the message to identify the request type.
|
||||
|
||||
## Allocate (12 bytes)
|
||||
[0] -> 0
|
||||
[1] -> Page count
|
||||
<!-- Currently this does not allocate here, check r1 for a ptr to alloc to -->
|
||||
[2..10] -> ptr to alloc at
|
||||
|
||||
## Deallocate (12 bytes)
|
||||
<!-- Currently this does not deallocate -->
|
||||
[0] -> 1
|
||||
[1] -> Page count
|
||||
[2..10] -> ptr to dealloc from
|
||||
|
||||
## Map Device Into Memory
|
||||
Typically only used for simple drivers such as vga.
|
||||
<!-- Unimp -->
|
||||
[0] -> 2
|
||||
[1] -> Page count
|
||||
[2..10] -> HostID
|
||||
[11..19] -> DeviceID
|
||||
|
||||
## Unmap Device From Memory
|
||||
<!-- Unimp -->
|
||||
[0] -> 3
|
||||
[1] -> Page count
|
||||
[2..10] -> HostID
|
||||
[11..19] -> DeviceID
|
||||
|
||||
## Set Memory Quota
|
||||
<!-- unimp -->
|
||||
[0] -> 4
|
||||
[1..9] -> HostID
|
||||
[10..18] -> ProcessID
|
||||
[19] -> Refer to the Memory Quota Table
|
||||
[20..28] -> Memory quota. In pages of memory. Multiply by 4096 to get the total byte count.
|
||||
|
||||
### Memory Quota Table
|
||||
0 -> No quota.
|
||||
1 -> Soft quota. Notifies the process supervisor.
|
||||
2 -> Hard quota. Refuses to allocate above the quota.
|
||||
3 -> Kill quota. Kill the process and notify the supervisor when the process tries to allocate above the quota.
|
||||
|
||||
## Set Buffer Quota
|
||||
<!-- unimp -->
|
||||
[0] -> 4
|
||||
[1..9] -> HostID
|
||||
[10..18] -> BufferID
|
||||
[19] -> Refer to the Buffer Quota Table
|
||||
[20..28] -> Buffer quota. In pages of memory. Multiply by 4096 to get the total byte count.
|
||||
|
||||
### Buffer Quota Table
|
||||
<!-- Because of the abusability of buffers there is no Kill Quota -->
|
||||
0 -> No quota
|
||||
1 -> Soft quota. Notify supervisor of quota violation Buffer Message
|
||||
2 -> Hard quota. Return an error message to the process that sent the message.
|
||||
|
Loading…
Reference in a new issue