This patchset adds an API test framework. Rather than driving kvm from qemu, we now have a way of calling the kvm API directly and observing the results. We can switch to guest mode and back at will and see any micro effects such as the result of executing particular instructions. A first test is added, for commit edde99ce0 ("KVM: Write protect memory after slot swap"). This would be pretty hard to test for using the current qemu-driven tests, but detects 5 million failures in about two minutes on my machine. As an experiment, the framework is coded in C++. Avi Kivity (14): Makefile: add support for C++ Improve autodepend includes v2: new Add exception class for kernel errors (errno) v2: new Add try_main() for running a program under an exception handler v2: new Introduce a C++ wrapper for the kvm APIs v2: throw std::exception exceptions, not ints, for libc failures better msr list management Add support for calling a function in guest mode v2: use tr1::function instead of boost::function Add sample test using the api test harness api: add support for KVM_SET_USER_MEMORY_REGION flags field v2: new api: support KVM_GET_DIRTY_LOG ioctl v2: new api: add memory map management v2: new Build tests with debug information v2: new api: Add support for creating an identity map with a hole v2: new Introduce libapi.a to avoid long Makefile recipes v2: new Add dirty log test v2: new Makefile | 8 +- api/api-sample.cc | 30 ++++++++ api/dirty-log.cc | 78 ++++++++++++++++++++ api/exception.cc | 33 ++++++++ api/exception.hh | 19 +++++ api/identity.cc | 95 ++++++++++++++++++++++++ api/identity.hh | 43 +++++++++++ api/kvmxx.cc | 194 +++++++++++++++++++++++++++++++++++++++++++++++++ api/kvmxx.hh | 85 +++++++++++++++++++++ api/memmap.cc | 76 +++++++++++++++++++ api/memmap.hh | 43 +++++++++++ config-x86-common.mak | 15 ++++- 12 files changed, 715 insertions(+), 4 deletions(-) create mode 100644 api/api-sample.cc create mode 100644 api/dirty-log.cc create mode 100644 api/exception.cc create mode 100644 api/exception.hh create mode 100644 api/identity.cc create mode 100644 api/identity.hh create mode 100644 api/kvmxx.cc create mode 100644 api/kvmxx.hh create mode 100644 api/memmap.cc create mode 100644 api/memmap.hh -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html