Hello,
finally,i combine the tow device into one,make the nitpicker use input service route to the driver.it worked. but i find the android based mircrokernel is slower than native android without microkernel.is it because of the comunication of IPC? in genode,there is a lot of RPC to make it become server and client mode.what's the relationship between RPC and IPC?is that the reson that android become slower?
on Genode, each RPC corresponds to an IPC call.
There is no general answer on how much the inter-process communication affects application performance. We always try to design the protocols between components in a way that IPC is used in a sensible way. For example, to communicate networking packets among components a Genode system, we don't use one IPC per packet but shared-memory buffers combined with asynchronous notifications. So many packet are passed from one component to another at once.
Empirically evidenced by our experiences with optimizing application performance in various scenarios, the speed of the IPC mechanism as provided by the kernel was hardly ever be a dominating factor.
I suppose that the visibly slow performance of L4Android compared to native Android can be mainly attributed to the different ways of how graphics stack works. On native Android, Android employs the GPU for rendering graphics, which is not only much faster than CPU-based rendering, but it also offloads work from the CPU. In contrast, L4Android processes all graphics rendering on the CPU an leaves the GPU unused.
Regards Norman