The program frame
The frame service: the device service of one virtio network device (virtio 1.x over PCI, the "modern" interface). It serves the frame contract (contract/frame) to one client, through the frame 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 queues, 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. The kernel has no code for this device (property 7); the code of virtio that the block service also uses is in support/virtio.
The device reads and writes the frame region of the client: the kernel is not on the path of the data (property 5). This service does not read a frame: the client builds and checks each one.
| Fact | Value |
|---|---|
| Source | programs/frame |
| Boot image | in the boot image; the image is not built, so its size is not known |
| Imports | none |
| Imported by | none |
Exports
| Export | What 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
| What | Value | As 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.
