On Wed, Dec 15, 2010 at 06:09:29PM +0200, Avi Kivity wrote: > 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 Applied, thanks. -- 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