X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=os%2Fos-linux.h;h=7a78b42d4d1066d7fc274f78e7cfb444555b3765;hb=9943adfb8adf50e6f54ab6aff613c99a3a75d224;hp=ba58bf7d962380413f15441d259eea8573f3c26e;hpb=9a0ac6c7b69355ea095f06c6b0a08115c946dd61;p=fio.git diff --git a/os/os-linux.h b/os/os-linux.h index ba58bf7d..7a78b42d 100644 --- a/os/os-linux.h +++ b/os/os-linux.h @@ -1,7 +1,11 @@ #ifndef FIO_OS_LINUX_H #define FIO_OS_LINUX_H +#ifdef __ANDROID__ +#define FIO_OS os_android +#else #define FIO_OS os_linux +#endif #include #include @@ -14,13 +18,20 @@ #include #include #include -#include #include #include #include +#include +#ifdef __ANDROID__ +#include "os-ashmem.h" +#define FIO_NO_HAVE_SHM_H +#endif #ifdef ARCH_HAVE_CRC_CRYPTO #include +#ifndef HWCAP_PMULL +#define HWCAP_PMULL (1 << 4) +#endif /* HWCAP_PMULL */ #ifndef HWCAP_CRC32 #define HWCAP_CRC32 (1 << 7) #endif /* HWCAP_CRC32 */ @@ -41,7 +52,6 @@ #define FIO_HAVE_IOSCHED_SWITCH #define FIO_HAVE_ODIRECT #define FIO_HAVE_HUGETLB -#define FIO_HAVE_RAWBIND #define FIO_HAVE_BLKTRACE #define FIO_HAVE_CL_SIZE #define FIO_HAVE_CGROUPS @@ -49,6 +59,7 @@ #define FIO_HAVE_TRIM #define FIO_HAVE_GETTID #define FIO_USE_GENERIC_INIT_RANDOM_STATE +#define FIO_HAVE_BYTEORDER_FUNCS #define FIO_HAVE_PWRITEV2 #define FIO_HAVE_SHM_ATTACH_REMOVED @@ -58,6 +69,8 @@ #define OS_MAP_ANON MAP_ANONYMOUS +#define FIO_EXT_ENG_DIR "/usr/local/lib/fio" + typedef cpu_set_t os_cpu_mask_t; #ifdef CONFIG_3ARG_AFFINITY @@ -72,8 +85,14 @@ typedef cpu_set_t os_cpu_mask_t; sched_getaffinity((pid), (ptr)) #endif -#define fio_cpu_clear(mask, cpu) (void) CPU_CLR((cpu), (mask)) -#define fio_cpu_set(mask, cpu) (void) CPU_SET((cpu), (mask)) +#ifdef CONFIG_PTHREAD_GETAFFINITY +#define FIO_HAVE_GET_THREAD_AFFINITY +#define fio_get_thread_affinity(mask) \ + pthread_getaffinity_np(pthread_self(), sizeof(mask), &(mask)) +#endif + +#define fio_cpu_clear(mask, cpu) CPU_CLR((cpu), (mask)) +#define fio_cpu_set(mask, cpu) CPU_SET((cpu), (mask)) #define fio_cpu_isset(mask, cpu) (CPU_ISSET((cpu), (mask)) != 0) #define fio_cpu_count(mask) CPU_COUNT((mask)) @@ -112,22 +131,34 @@ enum { #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) +static inline int ioprio_value(int ioprio_class, int ioprio) { /* * If no class is set, assume BE */ - if (!ioprio_class) - ioprio_class = IOPRIO_CLASS_BE; + if (!ioprio_class) + ioprio_class = IOPRIO_CLASS_BE; - ioprio |= ioprio_class << IOPRIO_CLASS_SHIFT; - return syscall(__NR_ioprio_set, which, who, ioprio); + return (ioprio_class << IOPRIO_CLASS_SHIFT) | ioprio; +} + +static inline bool ioprio_value_is_class_rt(unsigned int priority) +{ + return (priority >> IOPRIO_CLASS_SHIFT) == IOPRIO_CLASS_RT; } +static inline int ioprio_set(int which, int who, int ioprio_class, int ioprio) +{ + return syscall(__NR_ioprio_set, which, who, + ioprio_value(ioprio_class, ioprio)); +} + +#ifndef CONFIG_HAVE_GETTID static inline int gettid(void) { return syscall(__NR_gettid); } +#endif #define SPLICE_DEF_SIZE (64*1024) @@ -168,48 +199,12 @@ static inline unsigned long long os_phys_mem(void) return (unsigned long long) pages * (unsigned long long) pagesize; } -static inline int fio_lookup_raw(dev_t dev, int *majdev, int *mindev) -{ - struct raw_config_request rq; - int fd; - - if (major(dev) != RAW_MAJOR) - return 1; - - /* - * we should be able to find /dev/rawctl or /dev/raw/rawctl - */ - fd = open("/dev/rawctl", O_RDONLY); - if (fd < 0) { - fd = open("/dev/raw/rawctl", O_RDONLY); - if (fd < 0) - return 1; - } - - rq.raw_minor = minor(dev); - if (ioctl(fd, RAW_GETBIND, &rq) < 0) { - close(fd); - return 1; - } - - close(fd); - *majdev = rq.block_major; - *mindev = rq.block_minor; - return 0; -} - #ifdef O_NOATIME #define FIO_O_NOATIME O_NOATIME #else #define FIO_O_NOATIME 0 #endif -#ifdef O_ATOMIC -#define OS_O_ATOMIC O_ATOMIC -#else -#define OS_O_ATOMIC 040000000 -#endif - #ifdef MADV_REMOVE #define FIO_MADV_FREE MADV_REMOVE #endif @@ -250,14 +245,6 @@ static inline int arch_cache_line_size(void) return atoi(size); } -#ifdef __powerpc64__ -#define FIO_HAVE_CPU_ONLINE_SYSCONF -static inline unsigned int cpus_online(void) -{ - return sysconf(_SC_NPROCESSORS_CONF); -} -#endif - static inline unsigned long long get_fs_free_size(const char *path) { unsigned long long ret; @@ -323,6 +310,13 @@ static inline int fio_set_sched_idle(void) #ifndef RWF_SYNC #define RWF_SYNC 0x00000004 #endif +#ifndef RWF_NOWAIT +#define RWF_NOWAIT 0x00000008 +#endif + +#ifndef RWF_UNCACHED +#define RWF_UNCACHED 0x00000040 +#endif #ifndef RWF_WRITE_LIFE_SHIFT #define RWF_WRITE_LIFE_SHIFT 4 @@ -410,7 +404,8 @@ static inline bool os_cpu_has(cpu_features feature) #ifdef ARCH_HAVE_CRC_CRYPTO case CPU_ARM64_CRC32C: hwcap = getauxval(AT_HWCAP); - have_feature = (hwcap & HWCAP_CRC32) != 0; + have_feature = (hwcap & (HWCAP_PMULL | HWCAP_CRC32)) == + (HWCAP_PMULL | HWCAP_CRC32); break; #endif default: