diff -rcN mos-ipc/nre/apps/ipc/delegate/delegate.cc mos-ipc-sol/nre/apps/ipc/delegate/delegate.cc *** mos-ipc/nre/apps/ipc/delegate/delegate.cc 2017-11-07 15:53:46.103152306 +0100 --- mos-ipc-sol/nre/apps/ipc/delegate/delegate.cc 2015-12-02 09:22:34.000000000 +0100 *************** *** 24,37 **** PORTAL static void portal_getcap(void*) { UtcbFrameRef uf; ! // TODO delegate cap } PORTAL static void portal_echo(void*) { UtcbFrameRef uf; ! // TODO receive integer uf.finish_input(); ! // TODO echo integer back } // provides the echo portal --- 24,38 ---- PORTAL static void portal_getcap(void*) { UtcbFrameRef uf; ! uf.delegate(echo->sel()); } PORTAL static void portal_echo(void*) { UtcbFrameRef uf; ! int x; ! uf >> x; uf.finish_input(); ! uf << x; } // provides the echo portal *************** *** 42,51 **** // wants to call the echo portal static void client(Pt &getcap) { ! // TODO request echo portal cap int res; ! // TODO call portal Serial::get() << "Hello World: " << res << "\n"; } --- 43,64 ---- // wants to call the echo portal static void client(Pt &getcap) { ! 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; ! { ! Pt echopt(cap); ! UtcbFrame uf; ! uf << 42; ! echopt.call(uf); ! uf >> res; ! } Serial::get() << "Hello World: " << res << "\n"; } diff -rcN mos-ipc/nre/apps/ipc/echo/echo.cc mos-ipc-sol/nre/apps/ipc/echo/echo.cc *** mos-ipc/nre/apps/ipc/echo/echo.cc 2017-11-07 15:29:27.146550292 +0100 --- mos-ipc-sol/nre/apps/ipc/echo/echo.cc 2015-12-02 09:21:23.000000000 +0100 *************** *** 22,31 **** PORTAL static void portal_echo(void*) { UtcbFrameRef uf; ! int val; ! uf >> val; uf.finish_input(); ! uf << val; } int main() { --- 22,31 ---- PORTAL static void portal_echo(void*) { UtcbFrameRef uf; ! int x; ! uf >> x; uf.finish_input(); ! uf << x; } int main() { diff -rcN mos-ipc/nre/apps/ipc/service/service.cc mos-ipc-sol/nre/apps/ipc/service/service.cc *** mos-ipc/nre/apps/ipc/service/service.cc 2015-12-02 09:27:19.000000000 +0100 --- mos-ipc-sol/nre/apps/ipc/service/service.cc 2015-12-02 09:21:23.000000000 +0100 *************** *** 19,25 **** using namespace nre; PORTAL static void portal_echo(void*) { ! // TODO implement me } int main() { --- 19,29 ---- using namespace nre; PORTAL static void portal_echo(void*) { ! UtcbFrameRef uf; ! int x; ! uf >> x; ! uf.finish_input(); ! uf << x; } int main() {