[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 06/35] osdep: add qemu_read_full() to read interr
From: |
Isaku Yamahata |
Subject: |
[Qemu-devel] [PATCH v3 06/35] osdep: add qemu_read_full() to read interrupt-safely |
Date: |
Tue, 30 Oct 2012 17:32:42 +0900 |
This is read counter part of qemu_write_full().
Signed-off-by: Isaku Yamahata <address@hidden>
---
osdep.c | 24 ++++++++++++++++++++++++
qemu-common.h | 2 ++
2 files changed, 26 insertions(+)
diff --git a/osdep.c b/osdep.c
index 3b25297..416ffe1 100644
--- a/osdep.c
+++ b/osdep.c
@@ -261,6 +261,30 @@ ssize_t qemu_write_full(int fd, const void *buf, size_t
count)
return total;
}
+ssize_t qemu_read_full(int fd, void *buf, size_t count)
+{
+ ssize_t ret = 0;
+ ssize_t total = 0;
+
+ while (count) {
+ ret = read(fd, buf, count);
+ if (ret < 0) {
+ if (errno == EINTR)
+ continue;
+ break;
+ }
+ if (ret == 0) {
+ break;
+ }
+
+ count -= ret;
+ buf += ret;
+ total += ret;
+ }
+
+ return total;
+}
+
/*
* Opens a socket with FD_CLOEXEC set
*/
diff --git a/qemu-common.h b/qemu-common.h
index b54612b..16128c5 100644
--- a/qemu-common.h
+++ b/qemu-common.h
@@ -214,6 +214,8 @@ ssize_t qemu_write_full(int fd, const void *buf, size_t
count)
QEMU_WARN_UNUSED_RESULT;
ssize_t qemu_send_full(int fd, const void *buf, size_t count, int flags)
QEMU_WARN_UNUSED_RESULT;
+ssize_t qemu_read_full(int fd, void *buf, size_t count)
+ QEMU_WARN_UNUSED_RESULT;
ssize_t qemu_recv_full(int fd, void *buf, size_t count, int flags)
QEMU_WARN_UNUSED_RESULT;
--
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, 2012/10/30
- [Qemu-devel] [PATCH v3 06/35] osdep: add qemu_read_full() to read interrupt-safely,
Isaku Yamahata <=
- [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
- [Qemu-devel] [PATCH v3 29/35] postcopy/outgoing: add movebg mode(-m) to migration command, Isaku Yamahata, 2012/10/30