diff --git a/nre/apps/delegate/delegate.cc b/nre/apps/delegate/delegate.cc index 3922b12..a1b1d40 100644 --- a/nre/apps/delegate/delegate.cc +++ b/nre/apps/delegate/delegate.cc @@ -24,7 +24,7 @@ static Pt *echo; PORTAL static void portal_getcap(capsel_t) { UtcbFrameRef uf; - // TODO delegate cap + uf.delegate(echo->sel()); } PORTAL static void portal_echo(capsel_t) { @@ -43,10 +43,20 @@ static void service() { // wants to call the echo portal static void client(Pt &getcap) { - // TODO request echo portal cap + capsel_t cap = CapSelSpace::get().allocate(1); + { + UtcbFrame uf; + uf.delegation_window(Crd(cap,0,Crd::OBJ_ALL)); + getcap.call(uf); + } + // call portal int res; - // TODO call portal + Pt echopt(cap); + UtcbFrame uf; + uf << 42; + echopt.call(uf); + uf >> res; Serial::get() << "Hello World: " << res << "\n"; } diff --git a/nre/apps/echo/echo.cc b/nre/apps/echo/echo.cc index 770c4bd..10c61a8 100644 --- a/nre/apps/echo/echo.cc +++ b/nre/apps/echo/echo.cc @@ -22,9 +22,10 @@ using namespace nre; PORTAL static void portal_echo(capsel_t) { UtcbFrameRef uf; - // TODO receive integer + int x; + uf >> x; uf.finish_input(); - // TODO echo integer back + uf << x; } int main() {