From d4d688e926097faba7fd3717d1c0d3f296bdb526 Mon Sep 17 00:00:00 2001 From: David 'Digit' Turner Date: Tue, 26 Apr 2011 18:09:17 +0200 Subject: New goldfish_pipe virtual device. This adds a new virtual hardware device named "goldfish_pipe" used to implement a very fast communication channel between the guest system and the emulator. IMPORTANT: This depends on a special kernel driver, see: https://review.source.android.com/#change,22496 Usage from the guest is simply the following: fd = open("/dev/qemu_pipe", O_RDWR); const char* pipename = "pipe:"; ret = write(fd, pipename, strlen(pipename)+1); if (ret < 0) { /* could not connect to service named */ } /* now you can read()/write()/close() as a normal * file descriptor to exchange data with the service. */ In addition, this implements the following pipe services in the emulator: tcp: tcp:: unix: opengles The 'tcp:' and 'unix:' services simply redirect to a TCP or Unix socket on the host with minimal The 'opengles' service simply connects to tcp:locahost:22468 for now. We may change this to be more configurable in the future, but that's the port number used by the current experimental OpenGL ES hardware emulation host libraries / programs. Benchmarking with a simple ping-pong program shows that the guest <-> emulator can achieve a roundtrip bandwidth of 192 MB/s (on a 2.7 Ghz Xeon PC). Using the tcp: service to talk to a ping-pong server listening on localhost reaches 102 MB/s on the same machine, using a Unix socket reaches 140 MB/s. By contrast, using standard sockets in the guest reaches only 3.8 MB/s on the same machine (and requires special privileges from the application anyway). --- Makefile.common | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Makefile.common') diff --git a/Makefile.common b/Makefile.common index fb3118e..4bdc8ec 100644 --- a/Makefile.common +++ b/Makefile.common @@ -375,8 +375,8 @@ CORE_MISC_SOURCES = \ android/hw-control.c \ android/hw-sensors.c \ android/hw-qemud.c \ - android/hw-qemud-pipe-net.c \ android/looper-qemu.c \ + android/pipe-net.c \ android/qemu-setup.c \ android/snapshot.c \ android/utils/timezone.c \ -- cgit v1.1