aboutsummaryrefslogtreecommitdiff
path: root/include/exec/iorange.h
diff options
context:
space:
mode:
authorAnthony Liguori <aliguori@us.ibm.com>2012-12-21 07:53:48 -0600
committerAnthony Liguori <aliguori@us.ibm.com>2012-12-21 07:53:48 -0600
commitbb5801f551ee8591d576d87a9290af297998e322 (patch)
tree232402f237f940946c642c4cd6e0edcf6f94dd3f /include/exec/iorange.h
parent914606d26e654d4c01bd5186f4d05e3fd445e219 (diff)
parent9848a40427cd76628d04d918fa4751c542527915 (diff)
Merge remote-tracking branch 'quintela/thread-20121220.next' into staging
* quintela/thread-20121220.next: (79 commits) migration: merge QEMUFileBuffered into MigrationState migration: fix qemu_get_fd for BufferedFile ram: refactor ram_save_block() return value ram: account the amount of transferred ram better ram: optimize migration bitmap walking ram: Use memory_region_test_and_clear_dirty memory: introduce memory_region_test_and_clear_dirty ram: Add last_sent_block ram: rename last_block to last_seen_block migration: move migration notifier migration: Inline qemu_fopen_ops_buffered into migrate_fd_connect migration: move migration_fd_put_ready() migration: add XFER_LIMIT_RATIO migration: move buffered_file.c code into migration.c savevm: New save live migration method: pending buffered_file: unfold buffered_append in buffered_put_buffer buffered_file: don't flush on put buffer buffered_file: Unfold the trick to restart generating migration data migration: just lock migrate_fd_put_ready migration: remove unfreeze logic ... Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'include/exec/iorange.h')
-rw-r--r--include/exec/iorange.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/include/exec/iorange.h b/include/exec/iorange.h
new file mode 100644
index 0000000000..cd980a8312
--- /dev/null
+++ b/include/exec/iorange.h
@@ -0,0 +1,31 @@
+#ifndef IORANGE_H
+#define IORANGE_H
+
+#include <stdint.h>
+
+typedef struct IORange IORange;
+typedef struct IORangeOps IORangeOps;
+
+struct IORangeOps {
+ void (*read)(IORange *iorange, uint64_t offset, unsigned width,
+ uint64_t *data);
+ void (*write)(IORange *iorange, uint64_t offset, unsigned width,
+ uint64_t data);
+ void (*destructor)(IORange *iorange);
+};
+
+struct IORange {
+ const IORangeOps *ops;
+ uint64_t base;
+ uint64_t len;
+};
+
+static inline void iorange_init(IORange *iorange, const IORangeOps *ops,
+ uint64_t base, uint64_t len)
+{
+ iorange->ops = ops;
+ iorange->base = base;
+ iorange->len = len;
+}
+
+#endif