Checking executables before running them in L4re/fiasco

Adam Lackorzynski adam at os.inf.tu-dresden.de
Wed Sep 3 00:02:59 CEST 2014


On Tue Sep 02, 2014 at 14:08:03 +0000, Masti  Ramya Jayaram wrote:
> Also, could you elaborate a bit on how one could have smaller
> components? I decided to do it at bootstrap at the moment because  I
> realized that using the IO server also means including the entire C
> library (and much more). 

For a start, you can set "MODE = sigma0" in the Makefile to get a much
simpler setup (don't be confused by the name). Of course, not all
features are there then but should be ok for checking a binary. More
libraries can be removed further but also requires to do more by hand
then.

> On a related note, is there a way to find all the packages in use
> (there is more than what is compiled by module.list I can see)?

You mean binaries that are started? modules.list has defaults for
kernel, sigma0 and roottask but otherwise everything else needs to be
put there.

> ________________________________________
> From: l4-hackers [l4-hackers-bounces at os.inf.tu-dresden.de] on behalf of Masti  Ramya Jayaram [rmasti at inf.ethz.ch]
> Sent: 02 September 2014 09:57
> To: Adam Lackorzynski; l4-hackers at os.inf.tu-dresden.de
> Subject: RE: Checking executables before running them in L4re/fiasco
> 
> Thanks for the suggestions. From what you say, I guess it is best to
> do something between ned and say vmlinuz. It also makes better sense
> semantically (the kernel has booted and checks if the application is
> ok).
> 
>  Is there a way to accomplish the following:
> 
> a. Ned starts up a new process which does some checks and returns "OK/STOP".
> b. depending on the value returned by the new process, ned decides to launch/stop vmlinuz.
> 
> When I try "roottask moe rom/hello rom/vmlinuz" in the modules.list
> file, they execute in parallel. Is there a way to make it sequential?

You start ned via moe (as usual) and have a script like this:

local l = L4.default_loader;
local e = l:start({}, "rom/checker rom/hello");

if e:wait() == 0 then
  l:start({}, "rom/hello");
else
  print("Something is wrong with hello.");
end

So the checker program does exit(0) or exit(1) depending on its result.


Adam
-- 
Adam                 adam at os.inf.tu-dresden.de
  Lackorzynski         http://os.inf.tu-dresden.de/~adam/




More information about the l4-hackers mailing list