modus

The program block

The block service: the device service of one virtio block device (virtio 1.x over PCI, the "modern" interface). It serves the block contract (contract/block) to one client, through the block ring that the root service gives to both.

It has one device and nothing else: the registers of the device, one message interrupt, memory for the queue, the machine with the right Physical only, and a copy of the configuration of the device. The root service found the device, enabled it and set its interrupt (support/pci). The kernel has no code for this device (property 7). The code that each virtio device service shares is in support/virtio.

The device reads and writes the data region of the client: the kernel is not on the path of the data (property 5). The service enters the kernel to wait, and to wake its client; one entry serves many requests.

FactValue
Sourceprograms/block
Boot imagein the boot image; the image is not built, so its size is not known
Importsnone
Imported bynone

Exports

ExportWhat it does
entry()

Read from the source of the module, as the build reads it to describe the exports (tools/kerneltool/describe.odin).

What the root service gives it

WhatValueAs the root service says
Grants{}Not named in grants_of: the grants of each other program.
Budget: pages, programs, threads{pages = 256, programs = 1, threads = 1}

Read from grants_of and things_of in programs/root/main.odin; budget_of in the same file adds the limits of processor time and of log records.