summaryrefslogtreecommitdiffstats
path: root/src/examples/pfs_writer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/examples/pfs_writer.c')
-rw-r--r--src/examples/pfs_writer.c74
1 files changed, 42 insertions, 32 deletions
diff --git a/src/examples/pfs_writer.c b/src/examples/pfs_writer.c
index 0ebd772..80f0826 100644
--- a/src/examples/pfs_writer.c
+++ b/src/examples/pfs_writer.c
@@ -6,42 +6,52 @@
#include <syscall.h>
#include <stdio.h>
#include <string.h>
+#include <random.h>
+
#include "pfs.h"
+
char buffer[BIG];
int main(int argc, char* argv[])
{
- int i,j;
- char c;
- int id;
- int write_count;
- char start;
- char end;
-
- if (argc != 3 || strlen(argv[1]) != 1 || strlen(argv[2]) != 1)
- exit(1);
-
- start = argv[1][0];
- end = argv[2][0];
-
- for (i = 0; i < TIMES / (end - start + 1) + 1; ++i)
- {
- for (c = start; c <= end; ++c)
- {
- for (j = 0; j < BIG; j++)
- buffer[j] = c;
-
- id = open("file.1");
- write_count = write(id, buffer, BIG);
-
- if ( write_count != BIG )
- {
- printf("TEST ERROR: write() wrote only %d bytes out of %d bytes\n",
- write_count, BIG);
- }
- close(id);
- }
- }
- exit(0);
+ int i;
+ char c;
+ int id;
+ int write_count;
+ char start;
+ char end;
+
+ random_init((int)argv[3][0]);
+ printf("+\n");
+
+ if (argc != 4 || strlen(argv[1]) != 1 || strlen(argv[2]) != 1)
+ exit(1);
+
+ start = argv[1][0];
+ end = argv[2][0];
+
+ for (i = 0; i < TIMES / (end - start + 1) + 1; ++i)
+ {
+ for (c = start; c <= end; ++c)
+ {
+ memset(buffer, (int)c, BIG);
+
+ id = open("file.1");
+
+ seek(id,(random_ulong() % (TIMES-1)) * BIG);
+ write_count = write(id, buffer, BIG);
+
+ if ( write_count != BIG )
+ {
+ printf("TEST ERROR: write() wrote only %d bytes out of %d bytes\n",
+ write_count, BIG);
+ close(id);
+ exit(-1);
+ }
+ close(id);
+ }
+ }
+ printf("*+\n");
+ exit(0);
}