This series aims to do two main things: (1) Eliminate global state out of the ahci-test file so that the tests are more functional. This will allow me to write migration tests more easily. These tests are already written and will be submitted upstream after these refactor series.
(2) With global state removed from ahci-test, factor out functions that would be useful to manipulate ahci devices into libqos/ahci.o, to allow other testwriters to capitalize on the functional refactoring. So, as an overview, we do a few things: - Clean up the malloc interface to have a clear pc-specific interface that uses an architecture independent core. - Add some new structures to help keep track of AHCI and libqos state. - Rewrite existing AHCI helpers and routines to use the new structures and helper routines. - Excise any commonly valuable code to libqos/ahci.h and libqos/ahci.c. This series therefore introduces no new functionality itself, but I was trying to keep the series small and reviewable. The real necessity here in jumbling malloc and ahci functions around is to create a functional interface that can be bundled into a single structure to help facilitate migration testing inside of qtests, for which I intend to export to all of qtests to be re-used for other tests. >From this point forward, the churn to my AHCI refactor series should be significantly reduced and more pleasant to read. Thanks, John. V2: - #6 Made QGuestAllocator object opaque, in a new patch. - Created page_size setter method. - #7 Renamed "QOSOperations" to "QOSOps" and added Paolo's R-b. - #12 Dropped GCC attributes from static inline helpers (ahci.h) - #15 Adjusted assertion to not compare void ptr to int 0 - #15 Share ahci.o with libqos-obj-pc-y instead of only ahci-test * ahci.o is pc-only for now. John Snow (15): libqos: Split apart pc_alloc_init qtest/ahci: Create ahci.h libqos: create libqos.c libqos: add qtest_vboot libqos: add alloc_init_flags libqos: Update QGuestAllocator to be opaque libqos: add pc specific interface qtest/ahci: Store hba_base in AHCIQState qtest/ahci: finalize AHCIQState consolidation qtest/ahci: remove pcibus global qtest/ahci: remove guest_malloc global libqos/ahci: Functional register helpers qtest/ahci: remove getter/setter macros qtest/ahci: Bookmark FB and CLB pointers libqos/ahci: create libqos/ahci.c tests/Makefile | 5 +- tests/ahci-test.c | 894 ++++++++--------------------------------------- tests/libqos/ahci.c | 269 ++++++++++++++ tests/libqos/ahci.h | 435 +++++++++++++++++++++++ tests/libqos/libqos-pc.c | 24 ++ tests/libqos/libqos-pc.h | 9 + tests/libqos/libqos.c | 63 ++++ tests/libqos/libqos.h | 33 ++ tests/libqos/malloc-pc.c | 20 +- tests/libqos/malloc.c | 86 ++++- tests/libqos/malloc.h | 25 +- 11 files changed, 1068 insertions(+), 795 deletions(-) create mode 100644 tests/libqos/ahci.c create mode 100644 tests/libqos/ahci.h create mode 100644 tests/libqos/libqos-pc.c create mode 100644 tests/libqos/libqos-pc.h create mode 100644 tests/libqos/libqos.c create mode 100644 tests/libqos/libqos.h -- 1.9.3