diff --git a/repos/dde_uos-intel-gpgpu/include/gpgpu_virt/client.h b/repos/dde_uos-intel-gpgpu/include/gpgpu_virt/client.h index 050b379f5a..a5fe1108b8 100644 --- a/repos/dde_uos-intel-gpgpu/include/gpgpu_virt/client.h +++ b/repos/dde_uos-intel-gpgpu/include/gpgpu_virt/client.h @@ -27,6 +27,11 @@ struct Session_client : Genode::Rpc_client { return call(i); } + + void print_vgpu_bench(unsigned long i) override + { + call(i); + } }; } diff --git a/repos/dde_uos-intel-gpgpu/include/gpgpu_virt/session.h b/repos/dde_uos-intel-gpgpu/include/gpgpu_virt/session.h index 83701f8324..545f3b28d5 100644 --- a/repos/dde_uos-intel-gpgpu/include/gpgpu_virt/session.h +++ b/repos/dde_uos-intel-gpgpu/include/gpgpu_virt/session.h @@ -15,6 +15,7 @@ struct Session : Genode::Session virtual int say_hello(int& i) = 0; virtual void register_vm(Genode::size_t size, Genode::Ram_dataspace_capability& ram_cap) = 0; virtual int start_task(unsigned long kconf) = 0; + virtual void print_vgpu_bench(unsigned long i) = 0; /******************* ** RPC interface ** @@ -23,8 +24,10 @@ struct Session : Genode::Session GENODE_RPC(Rpc_say_hello, int, say_hello, int&); GENODE_RPC(Rpc_register_vm, void, register_vm, Genode::size_t, Genode::Ram_dataspace_capability&); GENODE_RPC(Rpc_start_task, int, start_task, unsigned long); + GENODE_RPC(Rpc_print_vgpu_bench, void, print_vgpu_bench, unsigned long); - GENODE_RPC_INTERFACE(Rpc_say_hello, Rpc_register_vm, Rpc_start_task); + + GENODE_RPC_INTERFACE(Rpc_say_hello, Rpc_register_vm, Rpc_start_task, Rpc_print_vgpu_bench); }; } diff --git a/repos/dde_uos-intel-gpgpu/src/virt/rpc.cc b/repos/dde_uos-intel-gpgpu/src/virt/rpc.cc index d49e4e6bc0..b5189dc245 100644 --- a/repos/dde_uos-intel-gpgpu/src/virt/rpc.cc +++ b/repos/dde_uos-intel-gpgpu/src/virt/rpc.cc @@ -27,6 +27,11 @@ int Session_component::say_hello(int& i) return 42; } +void Session_component::print_vgpu_bench(unsigned long i) +{ + vgpu.print_vgpu_bench(i); +}; + void Session_component::register_vm(Genode::size_t size, Genode::Ram_dataspace_capability& ram_cap_vm) { // create shared mem @@ -103,11 +108,16 @@ Session_component::~Session_component() _global_gpgpu_genode->freeRamCap(ram_cap); } + + Session_component* Root_component::_create_session(const char *) { return new (md_alloc()) Session_component(); } + + + Root_component::Root_component(Genode::Entrypoint &ep, Genode::Allocator &alloc) : diff --git a/repos/dde_uos-intel-gpgpu/src/virt/rpc.h b/repos/dde_uos-intel-gpgpu/src/virt/rpc.h index 26a9f73379..6e207556d2 100644 --- a/repos/dde_uos-intel-gpgpu/src/virt/rpc.h +++ b/repos/dde_uos-intel-gpgpu/src/virt/rpc.h @@ -26,6 +26,9 @@ struct Session_component : Genode::Rpc_object void register_vm(Genode::size_t size, Genode::Ram_dataspace_capability& ram_cap) override; int start_task(unsigned long kconf) override; + + void print_vgpu_bench(unsigned long i) override; + }; class Root_component diff --git a/repos/dde_uos-intel-gpgpu/src/virt/vgpu.h b/repos/dde_uos-intel-gpgpu/src/virt/vgpu.h index dc295cfce9..267ccf0942 100644 --- a/repos/dde_uos-intel-gpgpu/src/virt/vgpu.h +++ b/repos/dde_uos-intel-gpgpu/src/virt/vgpu.h @@ -3,6 +3,8 @@ #include #include "kernel.h" +#include + // driver #define GENODE @@ -78,6 +80,15 @@ namespace gpgpu_virt { }); return ret; } + + /** + * @brief Print bench + */ + void print_vgpu_bench(unsigned long i) + { + Genode::log("bench result of vgpu ", i); + GPGPU_Driver::getInstance().printBenchResults(); + }; }; } diff --git a/repos/hello_gpgpu/src/hello_gpgpu/CL/cl_genode.cc b/repos/hello_gpgpu/src/hello_gpgpu/CL/cl_genode.cc index 0254f345d1..2debd9fb08 100644 --- a/repos/hello_gpgpu/src/hello_gpgpu/CL/cl_genode.cc +++ b/repos/hello_gpgpu/src/hello_gpgpu/CL/cl_genode.cc @@ -81,3 +81,10 @@ void cl_genode::wait(struct kernel_config* kconf) asm("nop"); } } + + +void cl_genode::print_vgpu_bench(unsigned long i) +{ + backend_driver.print_vgpu_bench(i); +} + diff --git a/repos/hello_gpgpu/src/hello_gpgpu/CL/cl_genode.h b/repos/hello_gpgpu/src/hello_gpgpu/CL/cl_genode.h index d3938c486e..285340cedf 100644 --- a/repos/hello_gpgpu/src/hello_gpgpu/CL/cl_genode.h +++ b/repos/hello_gpgpu/src/hello_gpgpu/CL/cl_genode.h @@ -103,6 +103,11 @@ public: * @param kconf */ void wait(struct kernel_config* kconf); + + /** + * @brief print bench results */ + void print_vgpu_bench(unsigned long i); + }; #endif // CL_GENODE_H