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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html