[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 08/35] savevm/QEMUFile: consolidate QEMUFile func
From: |
Isaku Yamahata |
Subject: |
[Qemu-devel] [PATCH v3 08/35] savevm/QEMUFile: consolidate QEMUFile functions a bit |
Date: |
Tue, 30 Oct 2012 17:32:44 +0900 |
- add qemu_file_fd() for later use
- drop qemu_stdio_fd
Now qemu_file_fd() replaces qemu_stdio_fd().
- savevm/QEMUFileSocket: drop duplicated member fd
fd is already stored in QEMUFile so drop duplicated member
QEMUFileSocket::fd.
- remove QEMUFileSocket
Signed-off-by: Isaku Yamahata <address@hidden>
---
migration-exec.c | 4 ++--
migration-fd.c | 2 +-
qemu-file.h | 2 +-
savevm.c | 40 +++++++++++++++++++---------------------
4 files changed, 23 insertions(+), 25 deletions(-)
diff --git a/migration-exec.c b/migration-exec.c
index 6c97db9..95e9779 100644
--- a/migration-exec.c
+++ b/migration-exec.c
@@ -98,7 +98,7 @@ static void exec_accept_incoming_migration(void *opaque)
QEMUFile *f = opaque;
process_incoming_migration(f);
- qemu_set_fd_handler2(qemu_stdio_fd(f), NULL, NULL, NULL, NULL);
+ qemu_set_fd_handler2(qemu_file_fd(f), NULL, NULL, NULL, NULL);
qemu_fclose(f);
}
@@ -113,7 +113,7 @@ int exec_start_incoming_migration(const char *command)
return -errno;
}
- qemu_set_fd_handler2(qemu_stdio_fd(f), NULL,
+ qemu_set_fd_handler2(qemu_file_fd(f), NULL,
exec_accept_incoming_migration, NULL, f);
return 0;
diff --git a/migration-fd.c b/migration-fd.c
index 7335167..b3c54e5 100644
--- a/migration-fd.c
+++ b/migration-fd.c
@@ -104,7 +104,7 @@ static void fd_accept_incoming_migration(void *opaque)
QEMUFile *f = opaque;
process_incoming_migration(f);
- qemu_set_fd_handler2(qemu_stdio_fd(f), NULL, NULL, NULL, NULL);
+ qemu_set_fd_handler2(qemu_file_fd(f), NULL, NULL, NULL, NULL);
qemu_fclose(f);
}
diff --git a/qemu-file.h b/qemu-file.h
index 9b6dd08..bc222dc 100644
--- a/qemu-file.h
+++ b/qemu-file.h
@@ -70,7 +70,7 @@ QEMUFile *qemu_fdopen(int fd, const char *mode);
QEMUFile *qemu_fopen_socket(int fd);
QEMUFile *qemu_popen(FILE *popen_file, const char *mode);
QEMUFile *qemu_popen_cmd(const char *command, const char *mode);
-int qemu_stdio_fd(QEMUFile *f);
+int qemu_file_fd(QEMUFile *f);
int qemu_fclose(QEMUFile *f);
int qemu_fflush(QEMUFile *f);
void qemu_put_buffer(QEMUFile *f, const uint8_t *buf, int size);
diff --git a/savevm.c b/savevm.c
index 0c7af43..e24041b 100644
--- a/savevm.c
+++ b/savevm.c
@@ -178,6 +178,7 @@ struct QEMUFile {
uint8_t buf[IO_BUF_SIZE];
int last_error;
+ int fd; /* -1 means fd isn't associated */
};
typedef struct QEMUFileStdio
@@ -186,19 +187,18 @@ typedef struct QEMUFileStdio
QEMUFile *file;
} QEMUFileStdio;
-typedef struct QEMUFileSocket
+typedef struct QEMUFileFD
{
- int fd;
QEMUFile *file;
-} QEMUFileSocket;
+} QEMUFileFD;
static int socket_get_buffer(void *opaque, uint8_t *buf, int64_t pos, int size)
{
- QEMUFileSocket *s = opaque;
+ QEMUFileFD *s = opaque;
ssize_t len;
do {
- len = qemu_recv(s->fd, buf, size, 0);
+ len = qemu_recv(s->file->fd, buf, size, 0);
} while (len == -1 && socket_error() == EINTR);
if (len == -1)
@@ -207,9 +207,9 @@ static int socket_get_buffer(void *opaque, uint8_t *buf,
int64_t pos, int size)
return len;
}
-static int socket_close(void *opaque)
+static int fd_close(void *opaque)
{
- QEMUFileSocket *s = opaque;
+ QEMUFileFD *s = opaque;
g_free(s);
return 0;
}
@@ -276,6 +276,7 @@ QEMUFile *qemu_popen(FILE *stdio_file, const char *mode)
s->file = qemu_fopen_ops(s, stdio_put_buffer, NULL, stdio_pclose,
NULL, NULL, NULL);
}
+ s->file->fd = fileno(stdio_file);
return s->file;
}
@@ -291,17 +292,6 @@ QEMUFile *qemu_popen_cmd(const char *command, const char
*mode)
return qemu_popen(popen_file, mode);
}
-int qemu_stdio_fd(QEMUFile *f)
-{
- QEMUFileStdio *p;
- int fd;
-
- p = (QEMUFileStdio *)f->opaque;
- fd = fileno(p->stdio_file);
-
- return fd;
-}
-
QEMUFile *qemu_fdopen(int fd, const char *mode)
{
QEMUFileStdio *s;
@@ -325,6 +315,7 @@ QEMUFile *qemu_fdopen(int fd, const char *mode)
s->file = qemu_fopen_ops(s, stdio_put_buffer, NULL, stdio_fclose,
NULL, NULL, NULL);
}
+ s->file->fd = fd;
return s->file;
fail:
@@ -334,11 +325,11 @@ fail:
QEMUFile *qemu_fopen_socket(int fd)
{
- QEMUFileSocket *s = g_malloc0(sizeof(QEMUFileSocket));
+ QEMUFileFD *s = g_malloc0(sizeof(QEMUFileFD));
- s->fd = fd;
- s->file = qemu_fopen_ops(s, NULL, socket_get_buffer, socket_close,
+ s->file = qemu_fopen_ops(s, NULL, socket_get_buffer, fd_close,
NULL, NULL, NULL);
+ s->file->fd = fd;
return s->file;
}
@@ -381,6 +372,7 @@ QEMUFile *qemu_fopen(const char *filename, const char *mode)
s->file = qemu_fopen_ops(s, NULL, file_get_buffer, stdio_fclose,
NULL, NULL, NULL);
}
+ s->file->fd = fileno(s->stdio_file);
return s->file;
fail:
g_free(s);
@@ -431,10 +423,16 @@ QEMUFile *qemu_fopen_ops(void *opaque,
QEMUFilePutBufferFunc *put_buffer,
f->set_rate_limit = set_rate_limit;
f->get_rate_limit = get_rate_limit;
f->is_write = 0;
+ f->fd = -1;
return f;
}
+int qemu_file_fd(QEMUFile *f)
+{
+ return f->fd;
+}
+
int qemu_file_get_error(QEMUFile *f)
{
return f->last_error;
--
1.7.10.4
- [Qemu-devel] [PATCH v3 00/35] postcopy live migration, Isaku Yamahata, 2012/10/30
- [Qemu-devel] [PATCH v3 09/35] savevm/QEMUFile: introduce qemu_fopen_fd, Isaku Yamahata, 2012/10/30
- [Qemu-devel] [PATCH v3 02/35] arch_init: DPRINTF format error and typo, Isaku Yamahata, 2012/10/30
- [Qemu-devel] [PATCH v3 05/35] protect the ramlist with a separate mutex, Isaku Yamahata, 2012/10/30
- [Qemu-devel] [PATCH v3 08/35] savevm/QEMUFile: consolidate QEMUFile functions a bit,
Isaku Yamahata <=
- [Qemu-devel] [PATCH v3 06/35] osdep: add qemu_read_full() to read interrupt-safely, Isaku Yamahata, 2012/10/30
- [Qemu-devel] [PATCH v3 04/35] add a version number to ram_list, Isaku Yamahata, 2012/10/30
- [Qemu-devel] [PATCH v3 03/35] split MRU ram list, Isaku Yamahata, 2012/10/30
- [Qemu-devel] [PATCH v3 10/35] savevm/QEMUFile: add read/write QEMUFile on memory buffer, Isaku Yamahata, 2012/10/30
- [Qemu-devel] [PATCH v3 12/35] arch_init: export RAM_SAVE_xxx flags for postcopy, Isaku Yamahata, 2012/10/30
- [Qemu-devel] [PATCH v3 20/35] osdep: add QEMU_MADV_REMOVE and tirivial fix, Isaku Yamahata, 2012/10/30
- [Qemu-devel] [PATCH v3 01/35] migration.c: remove redundant line in migrate_init(), Isaku Yamahata, 2012/10/30
- [Qemu-devel] [PATCH v3 14/35] arch_init: refactor ram_save_block() and export ram_save_block(), Isaku Yamahata, 2012/10/30
- [Qemu-devel] [PATCH v3 11/35] savevm, buffered_file: introduce method to drain buffer of buffered file, Isaku Yamahata, 2012/10/30
- [Qemu-devel] [PATCH v3 33/35] arch_init: export migration_bitmap_sync and helper method to get bitmap, Isaku Yamahata, 2012/10/30