Microkit SDF

class sdfgen.SystemDescription(arch: Arch, paddr_top: int)

Class for describing a Microkit system. Manages all Microkit resources such as Protection Domains, Memory Regions, Channels, etc.

class Arch(*values)

Target architecture. Used to resolve architecture specific features or attributes.

AARCH32 = 0
AARCH64 = 1
RISCV32 = 2
RISCV64 = 3
X86 = 4
X86_64 = 5
class Channel(a: ProtectionDomain, b: ProtectionDomain, *, a_id: int | None = None, b_id: int | None = None, pp_a: bool | None = None, pp_b: bool | None = None, notify_a: bool | None = None, notify_b: bool | None = None)
property pd_a_id: int
property pd_b_id: int
class Irq(irq: int, trigger: Trigger | None = None, id: int | None = None)
class Trigger(*values)
EDGE = 0
LEVEL = 1
class Map(mr: MemoryRegion, vaddr: int, perms: str, *, cached: bool = True)
class MemoryRegion(name: str, size: int, *, paddr: int | None = None)
property paddr
class ProtectionDomain(name: str, program_image: str, priority: int | None = None, budget: int | None = None, period: int | None = None, passive: bool | None = None, stack_size: int | None = None, cpu: int | None = None)
add_child_pd(child_pd: ProtectionDomain, child_id=None) int

Returns allocated ID for the child.

add_irq(irq: Irq) int
add_map(map: Map)
property name: str
set_virtual_machine(vm: VirtualMachine)
class VirtualMachine(name: str, vcpus: List[Vcpu], priority: int | None = None, budget: int | None = None, period: int | None = None)
class Vcpu(*, id: int, cpu: int | None = None)
add_map(map: Map)
property name: str
add_channel(ch: Channel)
add_mr(mr: MemoryRegion)
add_pd(pd: ProtectionDomain)
render() str

Generate the XML view of the System Description Format for consumption by the Microkit.