fib-example #42

Merged
JakeHillion merged 2 commits from fib-example into main 2022-05-20 19:24:45 +01:00
4 changed files with 57 additions and 1 deletions

View File

@ -2,6 +2,16 @@
## Running the examples
### examples/fib
The fib example performs fibonacci trivially on a fixed number. It is the most basic example of a process that requires no privilege, excluding `Stdout` to print the result.
JakeHillion marked this conversation as resolved Outdated

s/Stderr/Stdout/

s/Stderr/Stdout/
To run this example:
cargo build
cargo build --example fib
target/debug/clone-shim -s examples/fib/spec.json target/debug/examples/fib
### examples/basic
The basic example instructs the shim to spawn two processes, each of which writes "hello from main{1,2}!" to stdout.

16
examples/fib/main.rs Normal file
View File

@ -0,0 +1,16 @@
fn main() {
println!("fib(1) = {}", fib(1));
println!("fib(7) = {}", fib(7));
println!("fib(19) = {}", fib(19));
}
fn fib(i: u64) -> u64 {
let mut a = 0;
let mut b = 1;
for _ in 0..i {
(a, b) = (b, a + b);
}
a
}

30
examples/fib/spec.json Normal file
View File

@ -0,0 +1,30 @@
{
"entrypoints": {
"fib": {
JakeHillion marked this conversation as resolved Outdated

s/main1/fib/

s/main1/fib/
"args": [
"BinaryName"
],
"environment": [
"Stdout",
{
"Filesystem": {
"host_path": "/lib/x86_64-linux-gnu/libgcc_s.so.1",
"environment_path": "/lib/libgcc_s.so.1"
}
},
{
"Filesystem": {
"host_path": "/lib/x86_64-linux-gnu/libc.so.6",
"environment_path": "/lib/libc.so.6"
}
},
{
"Filesystem": {
"host_path": "/lib64/ld-linux-x86-64.so.2",
"environment_path": "/lib64/ld-linux-x86-64.so.2"
}
}
]
}
}
}

View File

@ -98,7 +98,7 @@ fn main() {
};
match run(&args) {
Ok(_) => exitcode::OK,
Ok(code) => code,
Err(e) => {
error!("error: {}", e);
-1