2 module("Aw", package.seeall);
6 -- The defaults for loading the services
7 loader = L4.default_loader;
9 local rom = L4.Env.rom;
19 -- start the IO server, with the given arguments.
20 -- @return A capability table, containing all the
21 -- capabilities to the buses specified in the config files
23 function io(busses, ...)
24 bus_rtc = loader:new_channel();
25 bus_usbhid = loader:new_channel();
26 bus_gfx = loader:new_channel();
27 bus_ps2 = loader:new_channel();
32 sigma0 = L4.cast(L4.Proto.Factory, L4.Env.sigma0):create(L4.Proto.Sigma0);
34 rtc_bus = bus_rtc:svr();
35 bus_usbhid = bus_usbhid:svr();
37 fb_bus = bus_gfx:svr();
40 for k, v in pairs(busses) do
46 log = {"io", "red"}, l4re_dbg = L4.Dbg.Warn + L4.Dbg.Loader,
47 scheduler = L4.Env.user_factory:create(L4.Proto.Scheduler, 0x90, 0x80)
52 -- Start the RTC server, used on x86 for l4linux
53 -- @return The namespace capability of RTC, containing 'rtc'
57 rtc_if = loader:new_channel();
65 -- drop bus_rtc reference it is no longer needed in ned
68 loader:startv({caps = rtc_caps, log = {"rtc", "green"}}, "rom/rtc", ...);
73 -- Start the HID server.
74 -- @return A capability to the hid name space.
76 -- Also saves the name-space capability for later use e.g. by gui
78 -- do not start the HID Linux on AMD64
79 if L4.Info.arch() == "amd64" then
82 hid_ev = loader:create_namespace({ ev_irq = "ph", ev_buf="ph" });
97 scheduler = L4.Env.user_factory:create(L4.Proto.Scheduler, 0x80, 0x70)
98 }, "rom/vmlinuzusbv", "init=none", "showpfexc=0", "mem=12M",
99 "l4x_cpus=4", "l4ser.vkey_enable=1", "console=ttyLv0", ...);
105 -- Start the GUI server
106 -- @return The capability to the GUI-server name space.
107 function gui(svc_caps, fb, ...)
117 for k, v in pairs(svc_caps) do
118 gui_caps[k] = v:svr();
121 local input_drv = "";
122 if not hid_ev then -- run mag with libinput
123 input_drv = "input-libinput";
125 gui_caps.ev = hid_ev;
127 input_drv = "input-lxdd";
132 log = { "gui", "yellow" },
133 scheduler = L4.Env.user_factory:create(L4.Proto.Scheduler, 0x78, 0x70)
135 "rom/mag " .. input_drv .." client_fb mag_client", ...);
141 -- Get the Hw frame-buffer capability.
142 -- This function either uses the 'vesa' capability provided by moe
143 -- or starts fb-drv if 'vesa' is not available.
144 -- @return The capability to the Hw Goos object.
146 local fb = L4.Env.vesa;
154 fb = loader:new_channel():svr(); -- gfx
159 loader:startv({caps = fb_caps, log = {"fb-drv","blue"}}, "rom/fb-drv", "-m", ...);
161 return fb_caps.fb:m("rw"); --client