projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
configure: remember to initialize 'strndup' to "no"
[fio.git]
/
os
/
os-linux.h
diff --git
a/os/os-linux.h
b/os/os-linux.h
index 18298297756ed86d687fa9117b9fda2f3a6f6ab5..008ce2d0af1c15e78d0bcf19574f5d0ba0a0df02 100644
(file)
--- a/
os/os-linux.h
+++ b/
os/os-linux.h
@@
-16,12
+16,17
@@
#include <linux/unistd.h>
#include <linux/raw.h>
#include <linux/major.h>
#include <linux/unistd.h>
#include <linux/raw.h>
#include <linux/major.h>
-#include <byteswap.h>
+#include <linux/fs.h>
+#include <scsi/sg.h>
#include "./os-linux-syscall.h"
#include "binject.h"
#include "../file.h"
#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_CPU_AFFINITY
#define FIO_HAVE_DISK_UTIL
#define FIO_HAVE_SGIO
@@
-32,7
+37,6
@@
#define FIO_HAVE_HUGETLB
#define FIO_HAVE_RAWBIND
#define FIO_HAVE_BLKTRACE
#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
#define FIO_HAVE_CL_SIZE
#define FIO_HAVE_CGROUPS
#define FIO_HAVE_FS_STAT
@@
-220,21
+224,19
@@
static inline int fio_lookup_raw(dev_t dev, int *majdev, int *mindev)
#define FIO_MADV_FREE MADV_REMOVE
#endif
#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)
#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)
#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) __builtin_bswap64(x)
#else
-#define fio_swap64(x) __bswap_64(x)
-#endif
+#include <byteswap.h>
+#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"
#define CACHE_LINE_FILE \
"/sys/devices/system/cpu/cpu0/cache/index0/coherency_line_size"
@@
-258,6
+260,14
@@
static inline int arch_cache_line_size(void)
return atoi(size);
}
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;
static inline unsigned long long get_fs_free_size(const char *path)
{
unsigned long long ret;
@@
-314,9
+324,13
@@
static inline int fio_set_sched_idle(void)
static inline void make_pos_h_l(unsigned long *pos_h, unsigned long *pos_l,
off_t offset)
{
static inline void make_pos_h_l(unsigned long *pos_h, unsigned long *pos_l,
off_t offset)
{
+#if BITS_PER_LONG == 64
+ *pos_l = offset;
+ *pos_h = 0;
+#else
*pos_l = offset & 0xffffffff;
*pos_h = ((uint64_t) offset) >> 32;
*pos_l = offset & 0xffffffff;
*pos_h = ((uint64_t) offset) >> 32;
-
+#endif
}
static inline ssize_t preadv2(int fd, const struct iovec *iov, int iovcnt,
off_t offset, unsigned int flags)
}
static inline ssize_t preadv2(int fd, const struct iovec *iov, int iovcnt,
off_t offset, unsigned int flags)
@@
-350,4
+364,9
@@
static inline ssize_t pwritev2(int fd, const struct iovec *iov, int iovcnt,
#endif /* __NR_preadv2 */
#endif /* CONFIG_PWRITEV2 */
#endif /* __NR_preadv2 */
#endif /* CONFIG_PWRITEV2 */
+static inline int shm_attach_to_open_removed(void)
+{
+ return 1;
+}
+
#endif
#endif