aboutsummaryrefslogtreecommitdiff
path: root/samples
diff options
context:
space:
mode:
Diffstat (limited to 'samples')
-rw-r--r--samples/client.c37
1 files changed, 18 insertions, 19 deletions
diff --git a/samples/client.c b/samples/client.c
index 0de23cf..82cb12b 100644
--- a/samples/client.c
+++ b/samples/client.c
@@ -540,7 +540,7 @@ wait_for_irq(int irq_fd)
}
static void
-handle_dma_write(int sock, struct vfio_user_dma_region *dma_regions,
+handle_dma_write(int sock, struct vfio_user_dma_map *dma_regions,
int nr_dma_regions, int *dma_region_fds)
{
struct vfio_user_dma_region_access dma_access;
@@ -589,7 +589,7 @@ handle_dma_write(int sock, struct vfio_user_dma_region *dma_regions,
}
static void
-handle_dma_read(int sock, struct vfio_user_dma_region *dma_regions,
+handle_dma_read(int sock, struct vfio_user_dma_map *dma_regions,
int nr_dma_regions, int *dma_region_fds)
{
struct vfio_user_dma_region_access dma_access, *response;
@@ -632,7 +632,7 @@ handle_dma_read(int sock, struct vfio_user_dma_region *dma_regions,
}
static void
-handle_dma_io(int sock, struct vfio_user_dma_region *dma_regions,
+handle_dma_io(int sock, struct vfio_user_dma_map *dma_regions,
int nr_dma_regions, int *dma_region_fds)
{
handle_dma_write(sock, dma_regions, nr_dma_regions, dma_region_fds);
@@ -640,7 +640,7 @@ handle_dma_io(int sock, struct vfio_user_dma_region *dma_regions,
}
static void
-get_dirty_bitmaps(int sock, struct vfio_user_dma_region *dma_regions,
+get_dirty_bitmaps(int sock, struct vfio_user_dma_map *dma_regions,
UNUSED int nr_dma_regions)
{
struct vfio_iommu_type1_dirty_bitmap dirty_bitmap = { 0 };
@@ -1039,7 +1039,7 @@ migrate_to(char *old_sock_path, int *server_max_fds,
}
static void
-map_dma_regions(int sock, struct vfio_user_dma_region *dma_regions,
+map_dma_regions(int sock, struct vfio_user_dma_map *dma_regions,
int *dma_region_fds, int nr_dma_regions)
{
int i, ret;
@@ -1065,7 +1065,7 @@ map_dma_regions(int sock, struct vfio_user_dma_region *dma_regions,
int main(int argc, char *argv[])
{
int ret, sock, irq_fd;
- struct vfio_user_dma_region *dma_regions;
+ struct vfio_user_dma_map *dma_regions;
struct vfio_user_device_info client_dev_info = {0};
int *dma_region_fds;
int i;
@@ -1154,11 +1154,11 @@ int main(int argc, char *argv[])
dma_region_fds = alloca(sizeof(*dma_region_fds) * nr_dma_regions);
for (i = 0; i < nr_dma_regions; i++) {
+ dma_regions[i].argsz = sizeof(struct vfio_user_dma_map);
dma_regions[i].addr = i * sysconf(_SC_PAGESIZE);
dma_regions[i].size = sysconf(_SC_PAGESIZE);
dma_regions[i].offset = dma_regions[i].addr;
- dma_regions[i].prot = PROT_READ | PROT_WRITE;
- dma_regions[i].flags = VFIO_USER_F_DMA_REGION_MAPPABLE;
+ dma_regions[i].flags = VFIO_USER_F_DMA_REGION_READ | VFIO_USER_F_DMA_REGION_WRITE | VFIO_USER_F_DMA_REGION_MAPPABLE;
dma_region_fds[i] = fileno(fp);
}
@@ -1212,19 +1212,18 @@ int main(int argc, char *argv[])
*
* unmap the first group of the DMA regions
*/
- {
- struct vfio_user_dma_region r[server_max_fds];
- memcpy(r, dma_regions, sizeof(r));
- for (i = 0; i < (int)ARRAY_SIZE(r); i++) {
- r[i].flags = 0;
- ret = tran_sock_msg(sock, 7, VFIO_USER_DMA_UNMAP, &r[i],
- sizeof(struct vfio_user_dma_region),
- NULL, NULL, 0);
+ for (i = 0; i < server_max_fds; i++) {
+ struct vfio_user_dma_unmap r = {
+ .argsz = sizeof(r),
+ .addr = dma_regions[i].addr,
+ .size = dma_regions[i].size
+ };
+ ret = tran_sock_msg(sock, 7, VFIO_USER_DMA_UNMAP, &r, sizeof(r),
+ NULL, &r, sizeof(r));
+ if (ret < 0) {
+ err(EXIT_FAILURE, "failed to unmap DMA region");
}
}
- if (ret < 0) {
- err(EXIT_FAILURE, "failed to unmap DMA regions");
- }
/*
* Schedule an interrupt in 3 seconds from now in the old server and then