aboutsummaryrefslogtreecommitdiff
path: root/samples
diff options
context:
space:
mode:
authorThanos Makatos <thanos.makatos@nutanix.com>2020-11-18 11:01:02 -0500
committerThanos <tmakatos@gmail.com>2020-11-18 16:50:58 +0000
commit6b28f77bdbb2d78a075946f7893c5aec4df322ba (patch)
tree11010930a58288ae07a86dff0fa8833f0b6ef203 /samples
parent7cff9c45a0698605865b8739f8f301be24f47ec2 (diff)
downloadlibvfio-user-6b28f77bdbb2d78a075946f7893c5aec4df322ba.zip
libvfio-user-6b28f77bdbb2d78a075946f7893c5aec4df322ba.tar.gz
libvfio-user-6b28f77bdbb2d78a075946f7893c5aec4df322ba.tar.bz2
samples/server: use err/errx for simplicity
Signed-off-by: Thanos Makatos <thanos.makatos@nutanix.com>
Diffstat (limited to 'samples')
-rw-r--r--samples/server.c46
1 files changed, 17 insertions, 29 deletions
diff --git a/samples/server.c b/samples/server.c
index c5cd0e1..92f3312 100644
--- a/samples/server.c
+++ b/samples/server.c
@@ -130,8 +130,7 @@ static void map_dma(void *pvt, uint64_t iova, uint64_t len)
break;
}
if (idx >= NR_DMA_REGIONS) {
- fprintf(stderr, "Failed to add dma region, slots full\n");
- return;
+ errx(EXIT_FAILURE, "Failed to add dma region, slots full\n");
}
server_data->regions[idx].addr = iova;
@@ -171,7 +170,7 @@ void get_md5sum(unsigned char *buf, int len, unsigned char *md5sum)
* sparsely memory mappable. We should also have a test where the server does
* DMA directly on the client memory.
*/
-static int do_dma_io(lm_ctx_t *lm_ctx, struct server_data *server_data)
+static void do_dma_io(lm_ctx_t *lm_ctx, struct server_data *server_data)
{
int count = 4096;
unsigned char buf[count];
@@ -183,7 +182,11 @@ static int do_dma_io(lm_ctx_t *lm_ctx, struct server_data *server_data)
ret = lm_addr_to_sg(lm_ctx, server_data->regions[0].addr, count, &sg,
1, PROT_WRITE);
- assert(ret == 1); /* FIXME */
+ if (ret < 0) {
+ errx(EXIT_FAILURE, "failed to map %#lx-%#lx: %s\n",
+ server_data->regions[0].addr,
+ server_data->regions[0].addr + count -1, strerror(-ret));
+ }
memset(buf, 'A', count);
get_md5sum(buf, count, md5sum1);
@@ -191,8 +194,7 @@ static int do_dma_io(lm_ctx_t *lm_ctx, struct server_data *server_data)
server_data->regions[0].addr, count);
ret = lm_dma_write(lm_ctx, &sg, buf);
if (ret < 0) {
- fprintf(stderr, "lm_dma_write failed: %s\n", strerror(-ret));
- return ret;
+ errx(EXIT_FAILURE, "lm_dma_write failed: %s\n", strerror(-ret));
}
memset(buf, 0, count);
@@ -200,18 +202,14 @@ static int do_dma_io(lm_ctx_t *lm_ctx, struct server_data *server_data)
server_data->regions[0].addr, count);
ret = lm_dma_read(lm_ctx, &sg, buf);
if (ret < 0) {
- fprintf(stderr, "lm_dma_read failed: %s\n", strerror(-ret));
- return ret;
+ errx(EXIT_FAILURE, "lm_dma_read failed: %s\n", strerror(-ret));
}
get_md5sum(buf, count, md5sum2);
for(i = 0; i < MD5_DIGEST_LENGTH; i++) {
if (md5sum2[i] != md5sum1[i]) {
- fprintf(stderr, "DMA write and DMA read mismatch\n");
- return -EIO;
+ errx(EXIT_FAILURE, "DMA write and DMA read mismatch\n");
}
}
-
- return 0;
}
unsigned long map_area(UNUSED void *pvt, UNUSED unsigned long off,
@@ -308,8 +306,7 @@ int main(int argc, char *argv[]){
verbose = true;
break;
default: /* '?' */
- fprintf(stderr, "Usage: %s [-v] <socketpath>\n", argv[0]);
- exit(EXIT_FAILURE);
+ errx(EXIT_FAILURE, "Usage: %s [-v] <socketpath>\n", argv[0]);
}
}
@@ -325,9 +322,7 @@ int main(int argc, char *argv[]){
sparse_areas = calloc(1, sizeof(*sparse_areas) +
(nr_sparse_areas * sizeof(struct lm_mmap_area)));
if (sparse_areas == NULL) {
- ret = -ENOMEM;
- fprintf(stderr, "MMAP sparse areas ENOMEM\n");
- goto out;
+ err(EXIT_FAILURE, "MMAP sparse areas ENOMEM\n");
}
sparse_areas->nr_mmap_areas = nr_sparse_areas;
for (i = 0; i < nr_sparse_areas; i++) {
@@ -380,9 +375,7 @@ int main(int argc, char *argv[]){
server_data.lm_ctx = lm_ctx = lm_ctx_create(&dev_info);
if (lm_ctx == NULL) {
- fprintf(stderr, "failed to initialize device emulation\n");
- ret = -1;
- goto out;
+ err(EXIT_FAILURE, "failed to initialize device emulation\n");
}
do {
@@ -394,24 +387,19 @@ int main(int argc, char *argv[]){
ret = lm_irq_message(lm_ctx, 0);
if (ret < 0) {
- fprintf(stderr, "lm_irq_message() failed: %m\n");
+ err(EXIT_FAILURE, "lm_irq_message() failed");
}
- ret = do_dma_io(lm_ctx, &server_data);
- if (ret < 0) {
- fprintf(stderr, "DMA read/write failed: %m\n");
- }
+ do_dma_io(lm_ctx, &server_data);
ret = 0;
}
}
} while (ret == 0);
if (ret != -ENOTCONN && ret != -EINTR && ret != -ESHUTDOWN) {
- fprintf(stderr, "failed to realize device emulation: %s\n",
- strerror(-ret));
+ errx(EXIT_FAILURE, "failed to realize device emulation: %s\n",
+ strerror(-ret));
}
lm_ctx_destroy(lm_ctx);
-
-out:
free(server_data.bar1);
free(sparse_areas);
return ret;