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 jdb = L4.Env.jdb, -- to set the server name 13 }, 14 log = { "pipes", "r" }, 15 }, 16 "rom/pipe_server", "20"); 17 18 local block_server = l:new_channel(); 19 20 l:startv({ 21 caps = { 22 fsserver = block_server:svr(), 23 jdb = L4.Env.jdb, -- to set the server name 24 }, 25 log = { "blocksvr", "r" }, 26 }, 27 "rom/block_server", "20"); 28 29 local ext2server = l:new_channel(); 30 31 l:startv({ 32 caps = { 33 blockserver = block_server, 34 pipeserver = pipe_server, 35 fsserver = ext2server:svr(), 36 jdb = L4.Env.jdb, -- to set the server name 37 }, 38 log = { "ext2svr", "y" }, 39 }, 40 "rom/ext2_server", "blockserver", "rom/e2test.fs", "40", "fsserver"); 41 42 -- Obtain user filesystems with umask 0022 (18). 43 44 local open_for_user = 6; 45 local ext2server_paulb = L4.cast(L4.Proto.Factory, ext2server):create(open_for_user, 1000, 1000, 18); 46 47 local process_server = l:new_channel(); 48 49 l:startv({ 50 caps = { 51 fsserver = ext2server_paulb, 52 pipeserver = pipe_server, 53 prserver = process_server:svr(), 54 jdb = L4.Env.jdb, -- to set the server name 55 }, 56 log = { "process", "y" }, 57 }, 58 "rom/process_server", "bin/exec_region_mapper"); 59 60 l:startv({ 61 log = L4.Env.log, 62 caps = { 63 fsserver = ext2server_paulb, 64 pipeserver = pipe_server, 65 prserver = process_server, 66 }, 67 }, 68 -- program, options, operation involving a script file 69 "rom/fsaccess", "-m", "0022", "script", "-");