aboutsummaryrefslogtreecommitdiffstats
path: root/android
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix Mac and Windows builds.David 'Digit' Turner2011-05-261-0/+3
| | | | | | Silly me, KVM is only available on Linux hosts. Change-Id: I983c87b1f5473e92823398b7812a574f56fc3a68
* x86: kvm: fix KVM build + enable auto-detection.David 'Digit' Turner2011-05-266-1/+1931
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch fixes the build of KVM support in the x86 emulator by copying official Ubuntu Lucid KVM headers into android/config/linux-*/ This removes the need to rely on the build machine's versions of these headers, which caused various issues. Also, by default, the emulator will now probe the system to see if it can start in KVM mode automatically. See android-kvm.c for details. You can see the result of the probing with the -verbose option. IMPORTANT NOTE: It looks like there is a bug in the KVM code when the emulator is built as a 32-bit binary, running on a 64-bit kernel, so we explicitely disable KVM when we detect this case. It's hard to tell whether this is a bug in QEMU or some versions of the KVM driver. As such, KVM only works when building the emulator as a 64-bit program. For now, this is only possible with "android-configure.sh --try-64", not the Android build system. + Add a new QEMU option (-disable-kvm) to explicitely disable KVM if needed. This is an addition to -enable-kvm which already exists (and forces usage of KVM). Change-Id: I6a397cae29ab62b1c56fce95c1ee75a4664d6688
* Add support for xhdpi when injecting a skin dpi into the emulator.Xavier Ducrohet2011-05-172-8/+11
| | | | Change-Id: I58f06af3c39efc1fcc7dd4e53a701136229379de
* Dump hardware config. with -verbose option.David 'Digit' Turner2011-05-143-0/+320
| | | | | | | | | | | This patch dumps the content of the hardware configuration file when the -verbose option (or equivalent -debug-init) is used. This is useful to determine exactly what is launched when debugging emulator issues. Change-Id: I101b87cddb12c603b43420ea72bb357fc33f327d
* console: Fix 'event send' handling.David 'Digit' Turner2011-05-092-4/+10
| | | | | | | | | | | | | | | This patch fixes two bugs in the implementation of the 'event send' command: 1/ It prevents a crash when using the '0:0:0' event triple (note that the equivalent EV_SYNC:0:0 used in testing didn't crash) 2/ If fixes the parser to correctly handle several event triples on the same line, as in: event send <type1>:<code1>:<value1> <type2>:<code2>:<value2> ... Change-Id: I26cb55dd2feb75fda4f50ba0d49c7c8ad8a9dcca
* Merge "Fix -snapshot-list option."David 'Digit' Turner2011-05-052-1/+16
|\
| * Fix -snapshot-list option.David 'Digit' Turner2011-05-052-1/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch makes -snapshot-list work properly. More specifically: - If the AVD has snapshotting enabled, the emulator will find the appropriate file if you don't use -snapstorage. - If the AVD has no snapshot support, the emulator will print a user-friendly message to explain that. - If you're in the Android build, the emulator indicates that -snapstorage <file> is mandatory. Bug 4384430 Change-Id: I472b12f50b7f7da5a282b24036083c7598fe48eb
* | Fix "avd name" bug.David 'Digit' Turner2011-05-051-4/+1
|/ | | | | | | | | | | | | | The console's 'avd name' command returned "unknown" incorrectly. This was due to a missing option when invoking the core, even in the standalone case. Fixes bug 3454261 Change-Id: I5d4e346591e13bd7f525ad81953fd2d17c8f27b7 NOTE: This is similar to the tools_r10 quick fix at https://review.source.android.com/#change,22735, only simpler.
* Merge "Fix ANDROID_SDK_HOME handling."David 'Digit' Turner2011-05-041-12/+5
|\
| * Fix ANDROID_SDK_HOME handling.David 'Digit' Turner2011-05-041-12/+5
| | | | | | | | | | | | | | | | | | A previous patch introducing the "emulator" launcher program did regress the way ANDROID_SDK_HOME is parsed. Fix that by actually trusting bufprint_config_path() to always do the right thing :-) Change-Id: I11a13fea95727ee9c487595fd4ae5e81805986da
* | Correct fix for snapshot saving speedDavid 'Digit' Turner2011-05-041-0/+18
|/ | | | | | | | | | | | | | | QEMU is a weird animal. The "snapshot" property speeds-up snapshot saving but also redirect all stores to a temporary file which is deleted when the emulator exit. Use a different property to get the desired speed-up. Note that using "writeback" instead of "unsafe" forces the use of fdatasync() which will still be horribly slow. + Argument checking in avd snapshot commands in the console. (trying to load a name-less snapshot actually crashes the emulator). Change-Id: Ie61f110f037bbb3539c7f9892cb03bee8bfec6bd
* Document new QEMU pipe implementation.David 'Digit' Turner2011-05-042-0/+0
| | | | | | + Rename android/pipe-net.c to android/hw-pipe-net.c Change-Id: Ia2e2466c3bf3ea812f36639420fad7ce2e0cb61d
* Merge "Add 'emulator' launcher program."David 'Digit' Turner2011-05-038-224/+657
|\
| * Add 'emulator' launcher program.David 'Digit' Turner2011-05-028-224/+657
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch renames the current ARM-specific emulator binary to 'emulator-arm' and introduces a new tiny (less than 20KB) 'emulator' launcher program. The role of 'emulator' is to launch either 'emulator-arm' or 'emulator-x86' based on the target AVD or platform build being used. This program will be replaced in the future by what is currently known as 'emulator-ui', but is a good placeholder until this work is completed. + Move some utility functions from android/avd/info.[hc] to android/avd/util.[hc] so that 'emulator' can use them directly. IMPORTANT: For platform builds, the target architecture is detected automatically by parsing the build.prop file. For SDK AVDs however, there is no easy way to determine the target architecture, so the patch adds a new hw.cpu.arch property which can have value 'arm' or 'x86' Change-Id: I0084c196695a75c8b9230ba716b3cd2e12610ded
* | Use user-specific directory for temporary files.David 'Digit' Turner2011-05-021-2/+8
|/ | | | | | | Instead of use /tmp/android/, use /tmp/android-$USER/ so that several users can run the emulator easily on the same system. Change-Id: Ifda1b773cc87a9e0d4ff7e256b74a3f93377d73a
* New goldfish_pipe virtual device.David 'Digit' Turner2011-04-283-793/+525
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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:<name>"; ret = write(fd, pipename, strlen(pipename)+1); if (ret < 0) { /* could not connect to service named <name> */ } /* 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:<port> tcp:<hostname>:<port> unix:<path> 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).
* Add loopIo_poll() function.David 'Digit' Turner2011-04-283-0/+22
| | | | | | This will be used later by the goldfish network pipe implementation. Change-Id: I70c770efba15b2fd5ef7cc52450aa07163fa21f5
* Fix -qemu -vnc startup.David 'Digit' Turner2011-04-274-7/+22
| | | | | | | | | | | | Starting the emulator with something like "-qemu -vnc :1" didn't result in a valid boot sequence, due to the way our "hw-control" service is initialized. This patch fixes the issue. Note however that since a VNC client cannot send proper touch events, it can only be used as a viewer at the moment. Change-Id: Ib9b60ff7028892368547bff89b84f580344c2edd
* Add support for hw.lcd.backlightTim Wan2011-04-153-1/+18
| | | | Change-Id: I02dc12caa76c86de5d294b6fc857ae37b74f0130
* Add OpenGLES pipe implementation.David 'Digit' Turner2011-04-111-0/+788
| | | | Change-Id: I3ad498380de8438dbf430316af2d4391876057cc
* qemud: prevent recursive closure of clients.David 'Digit' Turner2011-04-113-8/+36
| | | | | | + add android/hw-qemud-pipe.h Change-Id: Icf7b316137cd9f1ce46e4c3642addccea6222a24
* Simplify async utils by removing extra LoopIo parameter.David 'Digit' Turner2011-04-1110-49/+76
| | | | | | | | | | | | | | | This patch removes the LoopIo parameter from asyncReader_run() by storing the initial pointer passed to asyncReader_init() inside the object itself. Same treatment is performed for: - AsyncReader - AsyncWriter - AsyncLineReader - AsyncConnector - AsyncConsoleConnect Change-Id: Ic74b817e4c326230ca1d38b3a5d8c4790c4f90c1
* <android/utils/assert.h>: Small refactoringDavid 'Digit' Turner2011-04-111-23/+73
| | | | Change-Id: If69874ace211e043d82ffd8349f54396fd334e94
* Add <android/utils/intmap.h> which implements an integer-keyed map of pointers.David 'Digit' Turner2011-04-112-0/+333
| | | | This will be used later to support QEMUD fast pipes.
* Fix framebuffer width/height computation.David 'Digit' Turner2011-03-251-2/+2
| | | | | | | | | | | | | | | This patch fixes a bug in the skin parsing code that computes the dimensions of the emulated framebuffer. The bug had the following symptoms: - The vertical framebuffer size reported by the 'events' device was always 640 (the default), independent of the skin's dimensions and emulated 'framebuffer' device dimensions. As such, all touch event Y coordinates were scaled by the system by 480/640 when running inside a HVGA screen. Change-Id: I8c67f011ee3929ef25cbf2c858ee800f277c516c
* Set hw.keyboard.lid default value to false for API level >= 12David 'Digit' Turner2011-03-226-60/+288
| | | | | | | | | | | | | | | | | | | | | This patch modifies the emulator to extract the target API level for the AVD or the current platform release, and use it to set the default value of hw.keyboard.lid. This will *not* affect any existing AVD/platform that sets the value explicitely in its config.ini (for AVDs) or hardware.ini (for platform builds). The change is beneficial for platform builds targetting API level >= 12, because the input framework changed its the window orientation behaviour depending on the availability of a hardware lid. In short, this allows platform builds to be correctly oriented, even if they don't provide a custom hardware.ini. Fix for bug 4128604 Change-Id: I195135aae6f3c4cc11d2f01e1293f3cd6cad2f58
* Fix -shell and -logcat options.David 'Digit' Turner2011-03-181-1/+5
| | | | | | They didn't work because the guest was trying to write to the wrong serial port. Change-Id: Ibd68c4b63d0808afcb0cfaffa07c35898e21df9a
* Fix write of disk sizes in ini files.David 'Digit' Turner2011-03-151-11/+14
| | | | | | | | The old implementation always expressed the size as multiples of kilobytes due to an improper order to size checks. For example, 66MB was written as '67584k' instead of '66m', which is correct but sub-optimal. Change-Id: I6365bf4c269ed7d213043182a8ae501713798b8f
* x86: Enable KVM mode for Android x86 emulator (update/rebase)Jun Nakajima2011-03-041-0/+1
| | | | | | | | | | This patch enables KVM mode on x86 Linux to boost performance of x86 emulaiton if the hardware-based virtualization feature is present on the host machine. Change-Id: I4b24474b3ec115a3b9a7bf017801f4f610253b09 Signed-off-by: Xiaohui Xin <xiaohui.xin@intel.com> Signed-off-by: Yunhong Jiang <yunhong.jiang@intel.com> Signed-off-by: Jun Nakajima <jun.nakajima@intel.com>
* Fix the standalone emulator build.David 'Digit' Turner2011-03-022-1/+5
| | | | | | The previous commit broke it due to the way it handled LOCAL_AR. Change-Id: I3458f9306b3fca9771d868673ae89f4d995aeec3
* Move AVD name initialization to the core.David 'Digit' Turner2011-03-013-2/+16
| | | | | | | Use a hardware property to send the AVD name to the core. The -android-avdname core option is still supported though. Change-Id: I4daac5c9fb65ed5261b5c04c1e1a18daed057a3f
* Move some serial ports initialization to the core.David 'Digit' Turner2011-03-015-72/+51
| | | | | | | | | | | This moves the initialization of the ports used by qemud and the "kmsg" component to the core. + Gets rid of the -old-system option used to suppot pre-1.4 Android system. We don't officially support anything before 1.5 anyway. Change-Id: Ied7e284d952adfd3419d96c39a7c48761f1b3f5c
* Move data partition initialization to core.David 'Digit' Turner2011-03-015-619/+81
| | | | Change-Id: I3c2b4668593391026da028194503fc87246e44ba
* Move system image initialization to core.David 'Digit' Turner2011-03-016-90/+189
| | | | Change-Id: Ic8da3ccaed9bab7dbb44c0bb341b0dba20b90980
* Move snapshot storage initialization to the core.David 'Digit' Turner2011-03-016-66/+87
| | | | Change-Id: I2c2b782fe4711cc8c323433e7976222b878cf679
* Move the SD Card initialization to the core.David 'Digit' Turner2011-03-016-53/+77
| | | | Change-Id: I2c8fa2a7df3d79ed4222296a93b787994a8ee11d
* Move cache partition initialization to core.David 'Digit' Turner2011-03-014-55/+49
| | | | Change-Id: I1f887e6f8fc38e43b1fff3f7bab3814b52542762
* Move kernel/ramdisk initialization to the core.David 'Digit' Turner2011-03-016-75/+112
| | | | | | | The QEMU -kernel, -initrd and -append options are still supported for overriding the hardware configuration. Change-Id: I034d9e25d0a23341086aa052f449db5de50b2c8d
* Rework AvdInfo processing.David 'Digit' Turner2011-03-015-575/+719
| | | | | | | | | | | | | | | | | | | | | This patch changes the code in android/avd/info.c to prepare for future patches that will move initialization disk images to the core (including locking and creating temporary files). + Remove AvdInfo structure dependencies on many of the functions, to make them more generic/usable. + Remove skin-related processing from avdInfo_new() and avdInfo_newFromBuild(). + Remove avdInfo_getSkinName() and avdInfo_getSkinDir(), and replace them with a single avdInfo_getSkinInfo(). + Rename 'qemu-hardware.ini' to 'hardware-qemu.ini' to follow the same naming convention than the one used for disk images (e.g. "userdata-qemu.img" and "system-qemu.img") Change-Id: I32cb0a5850f8c0b9df93d2630552941fd2b461c1
* Remove CONFIG_ANDROID_SNAPSHOTS macro.David 'Digit' Turner2011-03-0110-58/+6
| | | | | | The feature is no longer optional. Change-Id: I4558f12e3804e42069e8a3e6bcf0837d350206ed
* Remove un-needed "-netspeed full" and "-netdelay none".David 'Digit' Turner2011-03-012-9/+14
| | | | | | | | | This patch removes the use of "-netspeed full" and "-netdelay none" when starting a core, since these values correspond to the default. Usually, these were triggered by the values found in the skin files. Change-Id: I88944c6736dc721a8645b1c7d87bc0cb949feec4
* Remove un-needed -clock unix core option.David 'Digit' Turner2011-03-011-9/+0
| | | | | | | | | | | | Remove the '-clock unix' used to start the core on Linux. We do that by moving the problematic 'dynticks' clock to the end of the list in qemu-timer.c. The effect is that the unix clock will become the default for normal usage. You can still use the dynticks one for experimentation with -qemu -clock dynticks though. Change-Id: Ia7a8b2b262c62e8b80a82d6dbadec25964774b57
* Prevent hardware-qemu.ini overwrites.David 'Digit' Turner2011-03-011-2/+12
| | | | | | | | | | | When launching two instances of the same AVD, we need to ensure that we don't end-up overwriting the hardware-qemu.ini in the content directory. Note that this case is supported at the moment. Both the system and data partition will be backed by a temporary file when this is detected. Change-Id: I2c5d9195edc4c5be3b889c8da38cb1c7cae3662a
* Quote concatenated QEMU options when -verbose is used.David 'Digit' Turner2011-03-011-1/+8
| | | | Change-Id: I2d95fa0aa9a5f679372dfd1ae7c7cec906c3049d
* Merge "Fix sensor-related snapshot resume failure."David 'Digit' Turner2011-02-282-2/+13
|\
| * Fix sensor-related snapshot resume failure.David 'Digit' Turner2011-02-242-2/+13
| | | | | | | | | | | | | | | | A snapshot saved with the Tools r9 emulator couldn't be restored properly because we added another sensor (proximity) in Tools r10. Provide code to deal with this case properly and avoid a nasty crash. Change-Id: Ifc395c12496a599eb4ae02e089fe8e13a90865b4
* | Build arm and x86 binaries at the same time.David 'Digit' Turner2011-02-244-15/+19
|/ | | | | | | | | | | | This patch modifies the way we build the emulator's various programs. It reduces the number of static libraries generated, and better segregates between common, ui, qemu and target-specific code. Note that we build both the arm and x86 binaries at the same time in all build scenarios for now. This is done to catch build regressions as soon as possible. Change-Id: I6240705041e137e32f207e1e2444c614c52aaf05
* Remove android/main-ui.cDavid 'Digit' Turner2011-02-234-1106/+269
| | | | | | | | | | | | The differences between android/main.c and android/main-ui.c are now minimal, so remove the latter source file by moving the corresponding code into android/main-common.c Also add a -snapshot-no-time-update core option to implement the emulator-ui -no-snapshot-update-time option. We're probably going to clean this up a little in the future, but this is enough for now. Change-Id: I868bb4e47c3d106ae7436ee3f5b2c0ff5fb6ea5c
* Remove target-specific hard-coded macro.David 'Digit' Turner2011-02-231-8/+74
| | | | | | | | | | | | | | | This removes the hard-coding of the prebuilt architecture path in android/avd/info.c, in order to build a single version of this source that can work with any supported architectures. NOTE: The target architeture is only useful in the case of the Android build system. We check the target arch by parsing $ANDROID_PRODUCT_OUT/system/build.prop and look for a line that looks like: ro.product.cpu.abi=<abi> Change-Id: I4e573343fa532e66eb034c895a5759754f2d1aef
* Minor cleanups for core/ui Makefile separation.David 'Digit' Turner2011-02-233-4/+10
| | | | | | | | | | | | | | | | This patch contains minor cleanups that will be needed by a few future patches that will improve the way core and ui sources are separated and built. - remove a few compiler warnings - formatting - remove the memcheck CONFIG_MEMCHECK checks (they later get in the way) - refine hw/hw.h inclusion's of cpu.h (this comes from upstream) - add missing definitions for PRUd64 and PRUx64 (used later) - remove CONFIG_SHAPER test, replace with CONFIG_ANDROID instead. - add missing strdup() calls. Change-Id: Ic7d6681a51af718c298f0ee4bd884b1d8750f28e