X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=os-linux.h;h=f9094cb437148929c336ac1cd109ef15300188de;hp=865853ba4ec83381cea5059e37b808020bbd37fa;hb=bbfd6b00dea4daee05133c8cb991b78d091df9ae;hpb=8756e4d421722eaeb089067aeaaf317d05d53a57 diff --git a/os-linux.h b/os-linux.h index 865853ba..f9094cb4 100644 --- a/os-linux.h +++ b/os-linux.h @@ -3,6 +3,8 @@ #include #include +#include +#include #include #define FIO_HAVE_LIBAIO @@ -13,10 +15,12 @@ #define FIO_HAVE_SGIO #define FIO_HAVE_IOPRIO #define FIO_HAVE_SPLICE +#define FIO_HAVE_IOSCHED_SWITCH #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 @@ -62,6 +66,8 @@ static inline int vmsplice(int fd, const struct iovec *iov, #define SPLICE_F_MORE (0x04) /* expect more data */ #define SPLICE_F_GIFT (0x08) /* pages passed in are a gift */ +#define SPLICE_DEF_SIZE (64*1024) + enum { IOPRIO_WHO_PROCESS = 1, IOPRIO_WHO_PGRP, @@ -82,4 +88,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