Browse Source
Convert tests/tpci200-test to a driver node; currently it runs the PCI nop test only, but it also produces the ipack interface. Signed-off-by: Emanuele Giuseppe Esposito <e.emanuelegiuseppe@gmail.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>pull/80/head
committed by
Paolo Bonzini
3 changed files with 66 additions and 33 deletions
@ -0,0 +1,65 @@ |
|||
/*
|
|||
* QTest testcase for tpci200 PCI-IndustryPack bridge |
|||
* |
|||
* Copyright (c) 2014 SUSE LINUX Products GmbH |
|||
* |
|||
* This work is licensed under the terms of the GNU GPL, version 2 or later. |
|||
* See the COPYING file in the top-level directory. |
|||
*/ |
|||
|
|||
#include "qemu/osdep.h" |
|||
#include "libqtest.h" |
|||
#include "libqos/qgraph.h" |
|||
#include "libqos/pci.h" |
|||
|
|||
typedef struct QTpci200 QTpci200; |
|||
typedef struct QIpack QIpack; |
|||
|
|||
struct QIpack { |
|||
|
|||
}; |
|||
struct QTpci200 { |
|||
QOSGraphObject obj; |
|||
QPCIDevice dev; |
|||
QIpack ipack; |
|||
}; |
|||
|
|||
/* tpci200 */ |
|||
static void *tpci200_get_driver(void *obj, const char *interface) |
|||
{ |
|||
QTpci200 *tpci200 = obj; |
|||
if (!g_strcmp0(interface, "ipack")) { |
|||
return &tpci200->ipack; |
|||
} |
|||
if (!g_strcmp0(interface, "pci-device")) { |
|||
return &tpci200->dev; |
|||
} |
|||
|
|||
fprintf(stderr, "%s not present in tpci200\n", interface); |
|||
g_assert_not_reached(); |
|||
} |
|||
|
|||
static void *tpci200_create(void *pci_bus, QGuestAllocator *alloc, void *addr) |
|||
{ |
|||
QTpci200 *tpci200 = g_new0(QTpci200, 1); |
|||
QPCIBus *bus = pci_bus; |
|||
|
|||
qpci_device_init(&tpci200->dev, bus, addr); |
|||
tpci200->obj.get_driver = tpci200_get_driver; |
|||
return &tpci200->obj; |
|||
} |
|||
|
|||
static void tpci200_register_nodes(void) |
|||
{ |
|||
QOSGraphEdgeOptions opts = { |
|||
.extra_device_opts = "addr=04.0,id=ipack0", |
|||
}; |
|||
add_qpci_address(&opts, &(QPCIAddress) { .devfn = QPCI_DEVFN(4, 0) }); |
|||
|
|||
qos_node_create_driver("tpci200", tpci200_create); |
|||
qos_node_consumes("tpci200", "pci-bus", &opts); |
|||
qos_node_produces("tpci200", "ipack"); |
|||
qos_node_produces("tpci200", "pci-device"); |
|||
} |
|||
|
|||
libqos_init(tpci200_register_nodes); |
|||
@ -1,31 +0,0 @@ |
|||
/*
|
|||
* QTest testcase for tpci200 PCI-IndustryPack bridge |
|||
* |
|||
* Copyright (c) 2014 SUSE LINUX Products GmbH |
|||
* |
|||
* This work is licensed under the terms of the GNU GPL, version 2 or later. |
|||
* See the COPYING file in the top-level directory. |
|||
*/ |
|||
|
|||
#include "qemu/osdep.h" |
|||
#include "libqtest.h" |
|||
|
|||
/* Tests only initialization so far. TODO: Replace with functional tests */ |
|||
static void nop(void) |
|||
{ |
|||
} |
|||
|
|||
int main(int argc, char **argv) |
|||
{ |
|||
int ret; |
|||
|
|||
g_test_init(&argc, &argv, NULL); |
|||
qtest_add_func("/tpci200/nop", nop); |
|||
|
|||
qtest_start("-device tpci200"); |
|||
ret = g_test_run(); |
|||
|
|||
qtest_end(); |
|||
|
|||
return ret; |
|||
} |
|||
Loading…
Reference in new issue