aboutsummaryrefslogtreecommitdiff
path: root/samples/gpio-pci-idio-16.c
diff options
context:
space:
mode:
authorswapnili <swapnil.ingle@nutanix.com>2020-11-24 21:55:47 +0100
committerGitHub <noreply@github.com>2020-11-24 21:55:47 +0100
commit5429a84fe3b7def278ad1df6819d2ad7467ee5b0 (patch)
treee2f7be049a096eae9a16bf84d13f9dc1a62b8cd6 /samples/gpio-pci-idio-16.c
parentd33f124c5b0335c0525187e820c6b42be0bae743 (diff)
downloadlibvfio-user-5429a84fe3b7def278ad1df6819d2ad7467ee5b0.zip
libvfio-user-5429a84fe3b7def278ad1df6819d2ad7467ee5b0.tar.gz
libvfio-user-5429a84fe3b7def278ad1df6819d2ad7467ee5b0.tar.bz2
Api refactoring (#115)
API refactoring
Diffstat (limited to 'samples/gpio-pci-idio-16.c')
-rw-r--r--samples/gpio-pci-idio-16.c42
1 files changed, 23 insertions, 19 deletions
diff --git a/samples/gpio-pci-idio-16.c b/samples/gpio-pci-idio-16.c
index d4e485f..7dd8ec6 100644
--- a/samples/gpio-pci-idio-16.c
+++ b/samples/gpio-pci-idio-16.c
@@ -75,6 +75,9 @@ main(int argc, char *argv[])
char opt;
struct sigaction act = {.sa_handler = _sa_handler};
lm_ctx_t *lm_ctx;
+ lm_pci_hdr_id_t id = {.vid = 0x494F, .did = 0x0DC8};
+ lm_pci_hdr_ss_t ss = {0};
+ lm_pci_hdr_cc_t cc = {0};
while ((opt = getopt(argc, argv, "v")) != -1) {
switch (opt) {
@@ -91,27 +94,13 @@ main(int argc, char *argv[])
errx(EXIT_FAILURE, "missing MUSER socket path");
}
- lm_dev_info_t dev_info = {
- .trans = LM_TRANS_SOCK,
- .log = verbose ? _log : NULL,
- .log_lvl = LM_DBG,
- .pci_info = {
- .id = {.vid = 0x494F, .did = 0x0DC8 },
- .reg_info[LM_DEV_BAR2_REG_IDX] = {
- .flags = LM_REG_FLAG_RW,
- .size = 0x100,
- .fn = &bar2_access
- },
- },
- .uuid = argv[optind],
- };
-
sigemptyset(&act.sa_mask);
if (sigaction(SIGINT, &act, NULL) == -1) {
err(EXIT_FAILURE, "failed to register signal handler");
}
- lm_ctx = lm_ctx_create(&dev_info);
+ lm_ctx = lm_create_ctx(LM_TRANS_SOCK, argv[optind], 0,
+ verbose ? _log : NULL, LM_DBG, NULL);
if (lm_ctx == NULL) {
if (errno == EINTR) {
printf("interrupted\n");
@@ -120,16 +109,31 @@ main(int argc, char *argv[])
err(EXIT_FAILURE, "failed to initialize device emulation");
}
- ret = lm_ctx_drive(lm_ctx);
+ ret = lm_pci_setup_config_hdr(lm_ctx, id, ss, cc, false);
+ if (ret < 0) {
+ fprintf(stderr, "failed to setup pci header\n");
+ goto out;
+ }
+ ret = lm_setup_region(lm_ctx, LM_DEV_BAR2_REG_IDX, 0x100, &bar2_access,
+ LM_REG_FLAG_RW, NULL, NULL);
+ if (ret < 0) {
+ fprintf(stderr, "failed to setup region\n");
+ goto out;
+ }
+
+ ret = lm_ctx_drive(lm_ctx);
if (ret != 0) {
if (ret != -ENOTCONN && ret != -EINTR) {
- err(EXIT_FAILURE, "failed to realize device emulation");
+ fprintf(stderr, "failed to realize device emulation\n");
+ goto out;
}
+ ret = 0;
}
+out:
lm_ctx_destroy(lm_ctx);
- return EXIT_SUCCESS;
+ return ret;
}
/* ex: set tabstop=4 shiftwidth=4 softtabstop=4 expandtab: */