#include "winbase.h"\r
#include "writefiles.h"\r
\r
-#define WRITE_SIZE 61440\r
-\r
static double total_time, min_time, max_time, total_bytes;\r
\r
#define MIN(a,b) ((a)<(b)?(a):(b))\r
\r
-static void test_file(const char *fname, unsigned long filesize)\r
+static void test_file(const char *fname, unsigned long filesize, unsigned writesize)\r
{\r
int fd;\r
- unsigned char buf[WRITE_SIZE];\r
+ unsigned char *buf;\r
LARGE_INTEGER counter1, counter2, freq;\r
double t;\r
int n;\r
HANDLE h;\r
DWORD nwritten;\r
\r
+ buf = malloc(writesize);\r
+\r
QueryPerformanceCounter(&counter1);\r
\r
h = CreateFile (\r
\r
if (h == INVALID_HANDLE_VALUE) {\r
printf("Failed to open %s\n", fname);\r
+ free(buf);\r
return;\r
}\r
\r
- memset(buf, 0x42, WRITE_SIZE);\r
+ memset(buf, 0x42, writesize);\r
\r
- while (WriteFile(h, buf, MIN(WRITE_SIZE, filesize), &nwritten, NULL) && \r
+ while (WriteFile(h, buf, MIN(writesize, filesize), &nwritten, NULL) && \r
nwritten != 0 &&\r
filesize >= 0) {\r
total_bytes += nwritten;\r
total_time += t;\r
\r
printf("%6.2fms %s\n", t*1000.0, fname);\r
+ free(buf);\r
}\r
\r
\r
const char *dir;\r
unsigned long filesize;\r
unsigned numfiles;\r
+ unsigned writesize;\r
\r
printf("writefiles tester - tridge@samba.org\n");\r
\r
- if (argc < 4) {\r
- printf("Usage: writefiles <directory> <filesize> <numfiles>\n");\r
+ if (argc < 5) {\r
+ printf("Usage: writefiles <directory> <filesize> <numfiles> <writesize>\n");\r
exit(1);\r
}\r
\r
dir = argv[1];\r
filesize = strtoul(argv[2], NULL, 0);\r
numfiles = strtoul(argv[3], NULL, 0);\r
+ writesize = strtoul(argv[4], NULL, 0);\r
\r
printf("writing %u files in %s\n", numfiles, dir);\r
\r
for (i=0;i<numfiles;i++) {\r
char fname[1024];\r
sprintf(fname, "%s\\file%u.dat", dir, i);\r
- test_file(fname, filesize);\r
+ test_file(fname, filesize, writesize);\r
}\r
\r
printf("\nProcessed %d files totalling %.2f MBytes at %.2f MByte/s\n", \r