1.6 KiB
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
[2..10] -> ptr to alloc at
Deallocate (12 bytes)
[0] -> 1 [1] -> Page count [2..10] -> ptr to dealloc from
Map Device Into Memory
Typically only used for simple drivers such as vga.
[0] -> 2 [1] -> Page count [2..10] -> HostID [11..19] -> DeviceID
Unmap Device From Memory
[0] -> 3 [1] -> Page count [2..10] -> HostID [11..19] -> DeviceID
Set Memory Quota
[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
[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
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.