#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_DISK_UTIL
#define FIO_HAVE_IOSCHED_SWITCH
#define FIO_HAVE_IOPRIO
static inline int shmget (key_t __key, size_t __size, int __shmflg)
{
int fd,ret;
- char key[11];
-
+ char keybuf[11];
+
fd = open(ASHMEM_DEVICE, O_RDWR);
if (fd < 0)
return fd;
- sprintf(key,"%d",__key);
- ret = ioctl(fd, ASHMEM_SET_NAME, key);
+ sprintf(keybuf,"%d",__key);
+ ret = ioctl(fd, ASHMEM_SET_NAME, keybuf);
if (ret < 0)
goto error;
goto error;
return fd;
-
+
error:
close(fd);
return ret;
#define FIO_O_NOATIME 0
#endif
- #define fio_swap16(x) __bswap_16(x)
- #define fio_swap32(x) __bswap_32(x)
- #define fio_swap64(x) __bswap_64(x)
+ /* 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_swap32(x) __builtin_bswap32(x)
+ #define fio_swap64(x) __builtin_bswap64(x)
+ #else
+ #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"