Add a new directive WRITEPATTERN that specifies the pattern to use when writing throu...
[sahlberg/dbench.git] / child.c
diff --git a/child.c b/child.c
index 57fb2df43df7fa9aee41c2dcf5ce3709052eaa8c..e25cb8e6c3a843942afa1d8ce25f1c12b42559f2 100644 (file)
--- a/child.c
+++ b/child.c
@@ -30,6 +30,9 @@
 
 #define ival(s) strtoll(s, NULL, 0)
 
+#define RWBUFSIZE 1024*1024
+char rw_buf[RWBUFSIZE];
+
 static void nb_sleep(int usec)
 {
        usleep(usec);
@@ -408,6 +411,26 @@ loop_again:
                }
 
 
+               /* WRITEPATTERN */
+               if (strncmp(line, "WRITEPATTERN", 12) == 0) {
+                       char *ptr = rw_buf;
+                       int count = RWBUFSIZE;
+                       
+                       while (count > 0) {
+                             int len;
+
+                             len = count;
+                             if (len > strlen(line +13)) {
+                                     len = strlen(line +13);
+                             }
+                             memcpy(ptr, line+13, len);
+                             ptr += len;
+                             count -= len;
+                       }
+                       goto again;
+               }
+
+
                /* RANDOMSTRING */
                if (strncmp(line, "RANDOMSTRING", 12) == 0) {
                        have_random = 1;