diff options
Diffstat (limited to 'samples/server.c')
-rw-r--r-- | samples/server.c | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/samples/server.c b/samples/server.c index 2b93771..dd344f9 100644 --- a/samples/server.c +++ b/samples/server.c @@ -62,8 +62,7 @@ struct server_data { size_t bar1_size; struct dma_regions regions[NR_DMA_REGIONS]; struct { - uint64_t pending_read; - uint64_t pending_write; + uint64_t pending_bytes; vfu_migr_state_t state; } migration; }; @@ -135,7 +134,7 @@ bar1_access(vfu_ctx_t *vfu_ctx, char * const buf, if (is_write) { if (server_data->migration.state == VFU_MIGR_STATE_PRE_COPY) { /* dirty the whole thing */ - server_data->migration.pending_read = server_data->bar1_size; + server_data->migration.pending_bytes = server_data->bar1_size; } memcpy(server_data->bar1 + offset, buf, count); } else { @@ -275,20 +274,20 @@ migration_device_state_transition(vfu_ctx_t *vfu_ctx, vfu_migr_state_t state) if (setitimer(ITIMER_REAL, &new, NULL) != 0) { err(EXIT_FAILURE, "failed to disable timer"); } - server_data->migration.pending_read = server_data->bar1_size + sizeof(time_t); /* FIXME BAR0 region size */ + server_data->migration.pending_bytes = server_data->bar1_size + sizeof(time_t); /* FIXME BAR0 region size */ break; case VFU_MIGR_STATE_PRE_COPY: - server_data->migration.pending_read = server_data->bar1_size; + server_data->migration.pending_bytes = server_data->bar1_size; break; case VFU_MIGR_STATE_STOP: /* FIXME should gracefully fail */ - assert(server_data->migration.pending_read == 0); + assert(server_data->migration.pending_bytes == 0); break; case VFU_MIGR_STATE_RESUME: - server_data->migration.pending_write = server_data->bar1_size + sizeof(time_t); + server_data->migration.pending_bytes = server_data->bar1_size + sizeof(time_t); break; case VFU_MIGR_STATE_RUNNING: - assert(server_data->migration.pending_write == 0); + assert(server_data->migration.pending_bytes == 0); ret = arm_timer(vfu_ctx, server_data->bar0); if (ret < 0) { return ret; @@ -313,7 +312,8 @@ migration_read_data(vfu_ctx_t *vfu_ctx, void *buf, uint64_t size) * more complex state tracking which exceeds the scope of this sample. */ - if (server_data->migration.pending_read == 0 || size == 0) { + if (server_data->migration.pending_bytes == 0 || size == 0) { + vfu_log(vfu_ctx, LOG_DEBUG, "no data left to read"); return 0; } @@ -323,7 +323,7 @@ migration_read_data(vfu_ctx_t *vfu_ctx, void *buf, uint64_t size) total_read += sizeof(server_data->bar0); } - uint32_t read_start = total_read - server_data->migration.pending_read; + uint32_t read_start = total_read - server_data->migration.pending_bytes; uint32_t read_end = MIN(read_start + size, total_read); // exclusive assert(read_end > read_start); @@ -357,7 +357,7 @@ migration_read_data(vfu_ctx_t *vfu_ctx, void *buf, uint64_t size) memcpy(buf, &server_data->bar0 + read_start, bytes_read); } - server_data->migration.pending_read -= bytes_read; + server_data->migration.pending_bytes -= bytes_read; return bytes_read; } @@ -371,13 +371,13 @@ migration_write_data(vfu_ctx_t *vfu_ctx, void *data, uint64_t size) assert(server_data != NULL); assert(data != NULL); - if (server_data->migration.pending_write == 0 || size == 0) { + if (server_data->migration.pending_bytes == 0 || size == 0) { return 0; } uint32_t total_write = server_data->bar1_size + sizeof(server_data->bar0); - uint32_t write_start = total_write - server_data->migration.pending_write; + uint32_t write_start = total_write - server_data->migration.pending_bytes; uint32_t write_end = MIN(write_start + size, total_write); // exclusive assert(write_end > write_start); @@ -411,7 +411,7 @@ migration_write_data(vfu_ctx_t *vfu_ctx, void *data, uint64_t size) memcpy(&server_data->bar0 + write_start, buf, bytes_written); } - server_data->migration.pending_write -= bytes_written; + server_data->migration.pending_bytes -= bytes_written; return bytes_written; } @@ -448,7 +448,7 @@ int main(int argc, char *argv[]) case 'r': destination = true; server_data.migration.state = VFU_MIGR_STATE_RESUME; - server_data.migration.pending_write = + server_data.migration.pending_bytes = bar1_size + sizeof(time_t); break; default: /* '?' */ |