X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=os%2Fos-linux.h;h=911f7e7c8710719d5c6d2d9b094efb096077f0c5;hb=7922a7b75ea9f5cdc7505bb98bbed100d3e3d124;hp=b36d33c9804cc60f1c89699c6bd1f41ca4d22e50;hpb=6562685f373b9bc5f1ed909281737f55b34934a4;p=fio.git diff --git a/os/os-linux.h b/os/os-linux.h index b36d33c9..911f7e7c 100644 --- a/os/os-linux.h +++ b/os/os-linux.h @@ -16,21 +16,25 @@ #include #include #include -#include +#include "./os-linux-syscall.h" #include "binject.h" #include "../file.h" +#ifndef __has_builtin // Optional of course. + #define __has_builtin(x) 0 // Compatibility with non-clang compilers. +#endif + #define FIO_HAVE_CPU_AFFINITY #define FIO_HAVE_DISK_UTIL #define FIO_HAVE_SGIO #define FIO_HAVE_IOPRIO +#define FIO_HAVE_IOPRIO_CLASS #define FIO_HAVE_IOSCHED_SWITCH #define FIO_HAVE_ODIRECT #define FIO_HAVE_HUGETLB #define FIO_HAVE_RAWBIND #define FIO_HAVE_BLKTRACE -#define FIO_HAVE_PSHARED_MUTEX #define FIO_HAVE_CL_SIZE #define FIO_HAVE_CGROUPS #define FIO_HAVE_FS_STAT @@ -39,6 +43,7 @@ #define FIO_HAVE_GETTID #define FIO_USE_GENERIC_INIT_RANDOM_STATE #define FIO_HAVE_PWRITEV2 +#define FIO_HAVE_SHM_ATTACH_REMOVED #ifdef MAP_HUGETLB #define FIO_HAVE_MMAP_HUGE @@ -96,6 +101,12 @@ enum { #define IOPRIO_BITS 16 #define IOPRIO_CLASS_SHIFT 13 +#define IOPRIO_MIN_PRIO 0 /* highest priority */ +#define IOPRIO_MAX_PRIO 7 /* lowest priority */ + +#define IOPRIO_MIN_PRIO_CLASS 0 +#define IOPRIO_MAX_PRIO_CLASS 3 + static inline int ioprio_set(int which, int who, int ioprio_class, int ioprio) { /* @@ -211,21 +222,19 @@ static inline int fio_lookup_raw(dev_t dev, int *majdev, int *mindev) #define FIO_MADV_FREE MADV_REMOVE #endif -#if defined(__builtin_bswap16) +/* Check for GCC or Clang byte swap intrinsics */ +#if (__has_builtin(__builtin_bswap16) && __has_builtin(__builtin_bswap32) \ + && __has_builtin(__builtin_bswap64)) || (__GNUC__ > 4 \ + || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) /* fio_swapN */ #define fio_swap16(x) __builtin_bswap16(x) -#else -#define fio_swap16(x) __bswap_16(x) -#endif -#if defined(__builtin_bswap32) #define fio_swap32(x) __builtin_bswap32(x) -#else -#define fio_swap32(x) __bswap_32(x) -#endif -#if defined(__builtin_bswap64) #define fio_swap64(x) __builtin_bswap64(x) #else -#define fio_swap64(x) __bswap_64(x) -#endif +#include +#define fio_swap16(x) bswap_16(x) +#define fio_swap32(x) bswap_32(x) +#define fio_swap64(x) bswap_64(x) +#endif /* fio_swapN */ #define CACHE_LINE_FILE \ "/sys/devices/system/cpu/cpu0/cache/index0/coherency_line_size" @@ -341,4 +350,9 @@ static inline ssize_t pwritev2(int fd, const struct iovec *iov, int iovcnt, #endif /* __NR_preadv2 */ #endif /* CONFIG_PWRITEV2 */ +static inline int shm_attach_to_open_removed(void) +{ + return 1; +} + #endif