[CRIU] [PATCH 1/3] zdtm: lib: add {read,write}_data helpers
Mike Rapoport
rppt at linux.vnet.ibm.com
Thu Nov 30 14:46:18 MSK 2017
Some tests expect that all the data will be handled in a single invocation
of read/write system call. But it possible to have short read/write on a
loaded system and this is not an error.
Add helper functions that will reliably read/write the entire buffer.
Signed-off-by: Mike Rapoport <rppt at linux.vnet.ibm.com>
---
test/zdtm/lib/streamutil.c | 29 +++++++++++++++++++++++++++++
test/zdtm/lib/zdtmtst.h | 2 ++
2 files changed, 31 insertions(+)
diff --git a/test/zdtm/lib/streamutil.c b/test/zdtm/lib/streamutil.c
index ba66458..4ebe05c 100644
--- a/test/zdtm/lib/streamutil.c
+++ b/test/zdtm/lib/streamutil.c
@@ -40,3 +40,32 @@ int pipe_in2out(int infd, int outfd, uint8_t *buffer, int length)
}
}
}
+
+int read_data(int fd, unsigned char *buf, int size)
+{
+ int cur = 0;
+ int ret;
+ while (cur != size) {
+ ret = read(fd, buf + cur, size - cur);
+ if (ret <= 0)
+ return -1;
+ cur += ret;
+ }
+
+ return 0;
+}
+
+int write_data(int fd, const unsigned char *buf, int size)
+{
+ int cur = 0;
+ int ret;
+
+ while (cur != size) {
+ ret = write(fd, buf + cur, size - cur);
+ if (ret <= 0)
+ return -1;
+ cur += ret;
+ }
+
+ return 0;
+}
diff --git a/test/zdtm/lib/zdtmtst.h b/test/zdtm/lib/zdtmtst.h
index cd513b9..737ac77 100644
--- a/test/zdtm/lib/zdtmtst.h
+++ b/test/zdtm/lib/zdtmtst.h
@@ -55,6 +55,8 @@ extern int datasum(const uint8_t *buffer, unsigned length, uint32_t *crc);
/* streaming helpers */
extern int set_nonblock(int fd, int on);
extern int pipe_in2out(int infd, int outfd, uint8_t *buffer, int length);
+extern int read_data(int fd, unsigned char *buf, int len);
+extern int write_data(int fd, const unsigned char *buf, int len);
/* command line args */
struct long_opt {
--
2.7.4
More information about the CRIU
mailing list