-- vim:set ft=lua: local L4 = require("L4"); local l = L4.default_loader; local cons = l:new_channel(); l:start({ caps = { cons = cons:svr(); }, log = L4.Env.log }, "rom/cons -a"); l.log_fab = cons; local p2p = l:new_channel(); l:start({ caps = { svr = p2p:svr() }, log = { "p2p", "Blue" } }, "rom/l4vio_net_p2p" ); local ports = {} ports[1] = p2p:create(0, "ds-max=4") ports[2] = p2p:create(0, "ds-max=4") local serialdev = { arm = "ttyAMA0", arm64 = "ttyAMA0", amd64 = "ttyS0", riscv = "ttyS0" }; function start_vm(num, port) local flags = L4.Mem_alloc_flags.Continuous | L4.Mem_alloc_flags.Pinned | L4.Mem_alloc_flags.Super_pages; local align = 21; l:startv({ caps = { ram = L4.Env.user_factory:create(L4.Proto.Dataspace, 128 * 1024 * 1024, flags, align):m("rw"), net = port }, log = { "vm-" .. num, "", "key=" .. num }, }, "rom/uvmm", "-v", "-krom/linux", "-rrom/ramdisk.cpio.gz", "-drom/virt.dtb", "-cconsole=" .. serialdev[L4.Info.arch()] .. " rw"); end start_vm(1, ports[1]) start_vm(2, ports[2])