X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=os%2Fos.h;h=e1c285ce5a5152e6e7cb76af71687efd473dc845;hb=7874f8b74cf9da4c142b0574d0ba67a7c9c6db20;hp=95f0ff29e02fad0b8f7ed07b1f1e451c8bbeb1ae;hpb=03e20d687566753b90383571e5e152c5142bdffd;p=fio.git diff --git a/os/os.h b/os/os.h index 95f0ff29..e1c285ce 100644 --- a/os/os.h +++ b/os/os.h @@ -4,6 +4,7 @@ #include #include #include +#include #if defined(__linux__) #include "os-linux.h" @@ -17,6 +18,8 @@ #include "os-mac.h" #elif defined(_AIX) #include "os-aix.h" +#elif defined(__hpux) +#include "os-hpux.h" #elif defined(__CYGWIN__) #include "os-windows.h" #else @@ -29,6 +32,9 @@ #ifdef FIO_HAVE_POSIXAIO #include +#ifndef FIO_OS_HAVE_AIOCB_TYPEDEF +typedef struct aiocb os_aiocb_t; +#endif #endif #ifdef FIO_HAVE_SGIO @@ -45,7 +51,7 @@ #endif #ifndef FIO_HAVE_FADVISE -#define fadvise(fd, off, len, advice) (0) +#define posix_fadvise(fd, off, len, advice) (0) #ifndef POSIX_FADV_DONTNEED #define POSIX_FADV_DONTNEED (0) @@ -91,10 +97,93 @@ typedef unsigned long os_cpu_mask_t; #define OS_RAND_MAX RAND_MAX #endif +#ifdef FIO_HAVE_CLOCK_MONOTONIC +#define FIO_TIMER_CLOCK CLOCK_MONOTONIC +#else +#define FIO_TIMER_CLOCK CLOCK_REALTIME +#endif + #ifndef FIO_HAVE_RAWBIND #define fio_lookup_raw(dev, majdev, mindev) 1 #endif +#ifndef FIO_PREFERRED_ENGINE +#define FIO_PREFERRED_ENGINE "sync" +#endif + +#ifndef FIO_MAX_JOBS +#define FIO_MAX_JOBS 2048 +#endif + +#ifndef FIO_OS_HAVE_SOCKLEN_T +typedef socklen_t fio_socklen_t; +#endif + +#ifdef FIO_USE_GENERIC_SWAP +static inline uint16_t fio_swap16(uint16_t val) +{ + return (val << 8) | (val >> 8); +} + +static inline uint32_t fio_swap32(uint32_t val) +{ + val = ((val & 0xff00ff00UL) >> 8) | ((val & 0x00ff00ffUL) << 8); + + return (val >> 16) | (val << 16); +} + +static inline uint64_t fio_swap64(uint64_t val) +{ + val = ((val & 0xff00ff00ff00ff00ULL) >> 8) | + ((val & 0x00ff00ff00ff00ffULL) << 8); + val = ((val & 0xffff0000ffff0000ULL) >> 16) | + ((val & 0x0000ffff0000ffffULL) << 16); + + return (val >> 32) | (val << 32); +} +#endif + +#ifdef FIO_LITTLE_ENDIAN +#define __le16_to_cpu(x) (x) +#define __le32_to_cpu(x) (x) +#define __le64_to_cpu(x) (x) +#define __cpu_to_le16(x) (x) +#define __cpu_to_le32(x) (x) +#define __cpu_to_le64(x) (x) +#else +#define __le16_to_cpu(x) fio_swap16(x) +#define __le32_to_cpu(x) fio_swap32(x) +#define __le64_to_cpu(x) fio_swap64(x) +#define __cpu_to_le16(x) fio_swap16(x) +#define __cpu_to_le32(x) fio_swap32(x) +#define __cpu_to_le64(x) fio_swap64(x) +#endif + +#define le16_to_cpu(val) ({ \ + uint16_t *__val = &(val); \ + __le16_to_cpu(*__val); \ +}) +#define le32_to_cpu(val) ({ \ + uint32_t *__val = &(val); \ + __le32_to_cpu(*__val); \ +}) +#define le64_to_cpu(val) ({ \ + uint64_t *__val = &(val); \ + __le64_to_cpu(*__val); \ +}) +#define cpu_to_le16(val) ({ \ + uint16_t *__val = &(val); \ + __cpu_to_le16(*__val); \ +}) +#define cpu_to_le32(val) ({ \ + uint32_t *__val = &(val); \ + __cpu_to_le32(*__val); \ +}) +#define cpu_to_le64(val) ({ \ + uint64_t *__val = &(val); \ + __cpu_to_le64(*__val); \ +}) + #ifndef FIO_HAVE_BLKTRACE static inline int is_blktrace(const char *fname) { @@ -124,13 +213,13 @@ static inline int os_cache_line_size(void) } #ifdef FIO_USE_GENERIC_BDEV_SIZE -static inline int blockdev_size(int fd, unsigned long long *bytes) +static inline int blockdev_size(struct fio_file *f, unsigned long long *bytes) { off_t end; *bytes = 0; - end = lseek(fd, 0, SEEK_END); + end = lseek(f->fd, 0, SEEK_END); if (end < 0) return errno; @@ -163,4 +252,18 @@ static inline unsigned long long get_fs_size(const char *path) } #endif +#ifndef FIO_HAVE_CPU_ONLINE_SYSCONF +static inline unsigned int cpus_online(void) +{ + return sysconf(_SC_NPROCESSORS_ONLN); +} +#endif + +#ifndef FIO_HAVE_GETTID +static inline int gettid(void) +{ + return getpid(); +} +#endif + #endif