1 -- vim:set ft=lua: 2 3 local L4 = require("L4"); 4 5 local l = L4.default_loader; 6 7 local pipe_server = l:new_channel(); 8 9 l:startv({ 10 caps = { 11 pipeserver = pipe_server:svr(), 12 }, 13 log = { "pipes", "r" }, 14 }, 15 "rom/pipe_server", "10"); 16 17 local block_server = l:new_channel(); 18 19 l:startv({ 20 caps = { 21 fsserver = block_server:svr(), 22 }, 23 log = { "blocks", "r" }, 24 }, 25 "rom/block_server", "10"); 26 27 local ext2server = l:new_channel(); 28 29 l:startv({ 30 caps = { 31 blockserver = block_server, 32 pipeserver = pipe_server, 33 fsserver = ext2server:svr(), 34 }, 35 log = { "ext2", "y" }, 36 }, 37 "rom/ext2_server", "blockserver", "rom/e2test.fs", "20", "fsserver"); 38 39 -- Obtain user filesystems with umask 0022 (18). 40 41 local open_for_user = 6; 42 local ext2server_paulb = L4.cast(L4.Proto.Factory, ext2server):create(open_for_user, 1000, 1000, 18); 43 44 local process_server = l:new_channel(); 45 46 l:startv({ 47 caps = { 48 fsserver = ext2server_paulb, 49 prserver = process_server:svr(), 50 }, 51 log = { "process", "y" }, 52 }, 53 "rom/process_server", "home/paulb/exec_region_mapper"); 54 55 l:startv({ 56 caps = { 57 fsserver = ext2server_paulb, 58 prserver = process_server, 59 }, 60 log = { "client", "g" }, 61 }, 62 "rom/dstest_exec", "home/paulb/dstest_exec_payload", "hello", "world");