Add OS agnostic RAND_MAX
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/filesetup.c b/filesetup.c
index 0b29764..96d1b54 100644
--- a/filesetup.c
+++ b/filesetup.c
@@ -121,12 +121,12 @@
static unsigned long long get_rand_file_size(struct thread_data *td)
{
- unsigned long long ret, size_d;
+ unsigned long long ret, sized;
long r;
r = os_random_long(&td->file_size_state);
- size_d = td->o.file_size_high - td->o.file_size_low;
- ret = (unsigned long long) ((double) size_d * (r / (RAND_MAX + 1.0)));
+ sized = td->o.file_size_high - td->o.file_size_low;
+ ret = (unsigned long long) ((double) sized * (r / (OS_RAND_MAX + 1.0)));
ret += td->o.file_size_low;
ret -= (ret % td->o.rw_min_bs);
return ret;
diff --git a/io_u.c b/io_u.c
index 74c3295..3f71367 100644
--- a/io_u.c
+++ b/io_u.c
@@ -146,7 +146,7 @@
r = os_random_long(&td->random_state);
dprint(FD_RANDOM, "off rand %llu\n", r);
*b = (last_block(td, f, ddir) - 1)
- * (r / ((unsigned long long) RAND_MAX + 1.0));
+ * (r / ((unsigned long long) OS_RAND_MAX + 1.0));
/*
* if we are not maintaining a random map, we are done.
@@ -171,7 +171,8 @@
*/
loops = 10;
do {
- f->last_free_lookup = (f->num_maps - 1) * (r / (RAND_MAX+1.0));
+ f->last_free_lookup = (f->num_maps - 1) *
+ (r / (OS_RAND_MAX + 1.0));
if (!get_next_free_block(td, f, ddir, b))
return 0;
@@ -240,7 +241,7 @@
if (!td->o.bssplit_nr) {
buflen = (unsigned int)
(1 + (double) (td->o.max_bs[ddir] - 1)
- * r / (RAND_MAX + 1.0));
+ * r / (OS_RAND_MAX + 1.0));
} else {
long perc = 0;
unsigned int i;
@@ -288,7 +289,7 @@
long r;
r = os_random_long(&td->rwmix_state);
- v = 1 + (int) (100.0 * (r / (RAND_MAX + 1.0)));
+ v = 1 + (int) (100.0 * (r / (OS_RAND_MAX + 1.0)));
if (v <= td->o.rwmix[DDIR_READ])
return DDIR_READ;
@@ -620,7 +621,7 @@
long r = os_random_long(&td->next_file_state);
fno = (unsigned int) ((double) td->o.nr_files
- * (r / (RAND_MAX + 1.0)));
+ * (r / (OS_RAND_MAX + 1.0)));
f = td->files[fno];
if (f->flags & FIO_FILE_DONE)
continue;
diff --git a/os/os-freebsd.h b/os/os-freebsd.h
index af5fc9f..614296a 100644
--- a/os/os-freebsd.h
+++ b/os/os-freebsd.h
@@ -6,7 +6,7 @@
#define FIO_HAVE_POSIXAIO
#define FIO_HAVE_ODIRECT
-#define OS_MAP_ANON (MAP_ANON)
+#define OS_MAP_ANON MAP_ANON
typedef unsigned long os_cpu_mask_t;
typedef unsigned int os_random_state_t;
diff --git a/os/os-linux.h b/os/os-linux.h
index a07db06..72950c0 100644
--- a/os/os-linux.h
+++ b/os/os-linux.h
@@ -29,7 +29,7 @@
#define FIO_HAVE_FALLOCATE
#define FIO_HAVE_POSIXAIO_FSYNC
-#define OS_MAP_ANON (MAP_ANONYMOUS)
+#define OS_MAP_ANON MAP_ANONYMOUS
#ifndef CLOCK_MONOTONIC
#define CLOCK_MONOTONIC 1
diff --git a/os/os-solaris.h b/os/os-solaris.h
index 9e243e8..759f3c1 100644
--- a/os/os-solaris.h
+++ b/os/os-solaris.h
@@ -9,7 +9,8 @@
#define FIO_HAVE_FALLOCATE
#define FIO_HAVE_POSIXAIO_FSYNC
-#define OS_MAP_ANON (MAP_ANON)
+#define OS_MAP_ANON MAP_ANON
+#define OS_RAND_MAX 2147483648UL
struct solaris_rand_seed {
unsigned short r[3];
diff --git a/os/os.h b/os/os.h
index 2dfed5e..1cff494 100644
--- a/os/os.h
+++ b/os/os.h
@@ -68,6 +68,10 @@
#define FIO_O_NOATIME 0
#endif
+#ifndef OS_RAND_MAX
+#define OS_RAND_MAX RAND_MAX
+#endif
+
#ifndef FIO_HAVE_RAWBIND
#define fio_lookup_raw(dev, majdev, mindev) 1
#endif