X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=os-linux.h;h=5f0ef8214fcac07a32d629dbaea2fa9a9a209d15;hp=421baffb25342458d4005111a8cf804156853724;hb=9ebc27e1352b905fe3396ce2350a7765fe9c57b8;hpb=22f78b320a8d2ffa32b5736fe754c108a8d21525 diff --git a/os-linux.h b/os-linux.h index 421baffb..5f0ef821 100644 --- a/os-linux.h +++ b/os-linux.h @@ -16,10 +16,12 @@ #define FIO_HAVE_IOPRIO #define FIO_HAVE_SPLICE #define FIO_HAVE_IOSCHED_SWITCH +#define FIO_HAVE_ODIRECT #define OS_MAP_ANON (MAP_ANONYMOUS) typedef cpu_set_t os_cpu_mask_t; +typedef struct drand48_data os_random_state_t; /* * we want fadvise64 really, but it's so tangled... later @@ -87,4 +89,37 @@ static inline int blockdev_size(int fd, unsigned long long *bytes) return errno; } +static inline unsigned long long os_phys_mem(void) +{ + long pagesize, pages; + + pagesize = sysconf(_SC_PAGESIZE); + pages = sysconf(_SC_PHYS_PAGES); + if (pages == -1 || pagesize == -1) + return 0; + + return (unsigned long long) pages * (unsigned long long) pagesize; +} + +static inline void os_random_seed(unsigned long seed, os_random_state_t *rs) +{ + srand48_r(seed, rs); +} + +static inline long os_random_long(os_random_state_t *rs) +{ + long val; + + lrand48_r(rs, &val); + return val; +} + +static inline double os_random_double(os_random_state_t *rs) +{ + double val; + + drand48_r(rs, &val); + return val; +} + #endif