#define FIO_ARCH (arch_aarch64)
-#ifndef __NR_ioprio_set
-#define __NR_ioprio_set 30
-#define __NR_ioprio_get 31
-#endif
-
#define nop do { __asm__ __volatile__ ("yield"); } while (0)
#define read_barrier() do { __sync_synchronize(); } while (0)
#define write_barrier() do { __sync_synchronize(); } while (0)
#define FIO_ARCH (arch_alpha)
-#ifndef __NR_ioprio_set
-#define __NR_ioprio_set 442
-#define __NR_ioprio_get 443
-#endif
-
-#ifndef __NR_fadvise64
-#define __NR_fadvise64 413
-#endif
-
-#ifndef __NR_sys_splice
-#define __NR_sys_splice 468
-#define __NR_sys_tee 470
-#define __NR_sys_vmsplice 471
-#endif
-
#define nop do { } while (0)
#define read_barrier() __asm__ __volatile__("mb": : :"memory")
#define write_barrier() __asm__ __volatile__("wmb": : :"memory")
#define FIO_ARCH (arch_arm)
-#ifndef __NR_ioprio_set
-#define __NR_ioprio_set 314
-#define __NR_ioprio_get 315
-#endif
-
-#ifndef __NR_fadvise64
-#define __NR_fadvise64 270
-#endif
-
-#ifndef __NR_sys_splice
-#define __NR_sys_splice 340
-#define __NR_sys_tee 342
-#define __NR_sys_vmsplice 343
-#endif
-
-#ifndef __NR_preadv2
-#define __NR_preadv2 392
-#endif
-#ifndef __NR_pwritev2
-#define __NR_pwritev2 393
-#endif
-
#if defined (__ARM_ARCH_4__) || defined (__ARM_ARCH_4T__) \
|| defined (__ARM_ARCH_5__) || defined (__ARM_ARCH_5T__) || defined (__ARM_ARCH_5E__)\
|| defined (__ARM_ARCH_5TE__) || defined (__ARM_ARCH_5TEJ__) \
#define FIO_ARCH (arch_hppa)
-#ifndef __NR_ioprio_set
-#define __NR_ioprio_set 267
-#define __NR_ioprio_get 268
-#endif
-
-#ifndef __NR_fadvise64
-#define __NR_fadvise64 236
-#endif
-
-#ifndef __NR_sys_splice
-#define __NR_sys_splice 291
-#define __NR_sys_tee 293
-#define __NR_sys_vmsplice 294
-#endif
-
#define nop do { } while (0)
#define read_barrier() __asm__ __volatile__ ("" : : : "memory")
#define FIO_ARCH (arch_ia64)
-#ifndef __NR_ioprio_set
-#define __NR_ioprio_set 1274
-#define __NR_ioprio_get 1275
-#endif
-
-#ifndef __NR_fadvise64
-#define __NR_fadvise64 1234
-#endif
-
-#ifndef __NR_sys_splice
-#define __NR_sys_splice 1297
-#define __NR_sys_tee 1301
-#define __NR_sys_vmsplice 1302
-#endif
-
-#ifndef __NR_preadv2
-#define __NR_preadv2 1348
-#endif
-#ifndef __NR_pwritev2
-#define __NR_pwritev2 1349
-#endif
-
#define nop asm volatile ("hint @pause" ::: "memory");
#define read_barrier() asm volatile ("mf" ::: "memory")
#define write_barrier() asm volatile ("mf" ::: "memory")
#define FIO_ARCH (arch_mips)
-#ifndef __NR_ioprio_set
-#define __NR_ioprio_set 314
-#define __NR_ioprio_get 315
-#endif
-
-#ifndef __NR_fadvise64
-#define __NR_fadvise64 215
-#endif
-
-#ifndef __NR_sys_splice
-#define __NR_sys_splice 263
-#define __NR_sys_tee 265
-#define __NR_sys_vmsplice 266
-#endif
-
#define read_barrier() __asm__ __volatile__("": : :"memory")
#define write_barrier() __asm__ __volatile__("": : :"memory")
#define nop __asm__ __volatile__("": : :"memory")
#define FIO_ARCH (arch_ppc)
-#ifndef __NR_ioprio_set
-#define __NR_ioprio_set 273
-#define __NR_ioprio_get 274
-#endif
-
-#ifndef __NR_fadvise64
-#define __NR_fadvise64 233
-#endif
-
-#ifndef __NR_sys_splice
-#define __NR_sys_splice 283
-#define __NR_sys_tee 284
-#define __NR_sys_vmsplice 285
-#endif
-
#define nop do { } while (0)
#ifdef __powerpc64__
#define FIO_ARCH (arch_s390)
-#ifndef __NR_ioprio_set
-#define __NR_ioprio_set 282
-#define __NR_ioprio_get 283
-#endif
-
-#ifndef __NR_fadvise64
-#define __NR_fadvise64 253
-#endif
-
-#ifndef __NR_sys_splice
-#define __NR_sys_splice 306
-#define __NR_sys_tee 308
-#define __NR_sys_vmsplice 309
-#endif
-
-#ifndef __NR_preadv2
-#define __NR_preadv2 376
-#endif
-#ifndef __NR_pwritev2
-#define __NR_pwritev2 377
-#endif
-
#define nop asm volatile("nop" : : : "memory")
#define read_barrier() asm volatile("bcr 15,0" : : : "memory")
#define write_barrier() asm volatile("bcr 15,0" : : : "memory")
#define FIO_ARCH (arch_sh)
-#ifndef __NR_ioprio_set
-#define __NR_ioprio_set 288
-#define __NR_ioprio_get 289
-#endif
-
-#ifndef __NR_fadvise64
-#define __NR_fadvise64 250
-#endif
-
-#ifndef __NR_sys_splice
-#define __NR_sys_splice 313
-#define __NR_sys_tee 315
-#define __NR_sys_vmsplice 316
-#endif
-
#define nop __asm__ __volatile__ ("nop": : :"memory")
#define mb() \
#define FIO_ARCH (arch_sparc)
-#ifndef __NR_ioprio_set
-#define __NR_ioprio_set 196
-#define __NR_ioprio_get 218
-#endif
-
-#ifndef __NR_fadvise64
-#define __NR_fadvise64 209
-#endif
-
-#ifndef __NR_sys_splice
-#define __NR_sys_splice 232
-#define __NR_sys_tee 280
-#define __NR_sys_vmsplice 25
-#endif
-
-#ifndef __NR_preadv2
-#define __NR_preadv2 358
-#endif
-#ifndef __NR_pwritev2
-#define __NR_pwritev2 359
-#endif
-
#define nop do { } while (0)
#define read_barrier() __asm__ __volatile__ ("" : : : "memory")
#define FIO_ARCH (arch_sparc64)
-#ifndef __NR_ioprio_set
-#define __NR_ioprio_set 196
-#define __NR_ioprio_get 218
-#endif
-
-#ifndef __NR_fadvise64
-#define __NR_fadvise64 209
-#endif
-
-#ifndef __NR_sys_splice
-#define __NR_sys_splice 232
-#define __NR_sys_tee 280
-#define __NR_sys_vmsplice 25
-#endif
-
-#ifndef __NR_preadv2
-#define __NR_preadv2 358
-#endif
-#ifndef __NR_pwritev2
-#define __NR_pwritev2 359
-#endif
-
#define nop do { } while (0)
#define membar_safe(type) \
#define FIO_ARCH (arch_i386)
-#ifndef __NR_ioprio_set
-#define __NR_ioprio_set 289
-#define __NR_ioprio_get 290
-#endif
-
-#ifndef __NR_fadvise64
-#define __NR_fadvise64 250
-#endif
-
-#ifndef __NR_sys_splice
-#define __NR_sys_splice 313
-#define __NR_sys_tee 315
-#define __NR_sys_vmsplice 316
-#endif
-
-#ifndef __NR_preadv2
-#define __NR_preadv2 378
-#endif
-#ifndef __NR_pwritev2
-#define __NR_pwritev2 379
-#endif
-
#define FIO_HUGE_PAGE 4194304
#define nop __asm__ __volatile__("rep;nop": : :"memory")
#define FIO_ARCH (arch_x86_64)
-#ifndef __NR_ioprio_set
-#define __NR_ioprio_set 251
-#define __NR_ioprio_get 252
-#endif
-
-#ifndef __NR_fadvise64
-#define __NR_fadvise64 221
-#endif
-
-#ifndef __NR_sys_splice
-#define __NR_sys_splice 275
-#define __NR_sys_tee 276
-#define __NR_sys_vmsplice 278
-#endif
-
-#ifndef __NR_shmget
-#define __NR_shmget 29
-#define __NR_shmat 30
-#define __NR_shmctl 31
-#define __NR_shmdt 67
-#endif
-
-#ifndef __NR_preadv2
-#define __NR_preadv2 327
-#endif
-#ifndef __NR_pwritev2
-#define __NR_pwritev2 328
-#endif
-
-
#define FIO_HUGE_PAGE 2097152
#define nop __asm__ __volatile__("rep;nop": : :"memory")
--- /dev/null
+#ifndef FIO_OS_LINUX_SYSCALL_H
+#define FIO_OS_LINUX_SYSCALL_H
+
+#include "../arch/arch.h"
+
+/* Linux syscalls for i386 */
+#if defined(ARCH_X86_H)
+#ifndef __NR_ioprio_set
+#define __NR_ioprio_set 289
+#define __NR_ioprio_get 290
+#endif
+
+#ifndef __NR_fadvise64
+#define __NR_fadvise64 250
+#endif
+
+#ifndef __NR_sys_splice
+#define __NR_sys_splice 313
+#define __NR_sys_tee 315
+#define __NR_sys_vmsplice 316
+#endif
+
+#ifndef __NR_preadv2
+#define __NR_preadv2 378
+#endif
+#ifndef __NR_pwritev2
+#define __NR_pwritev2 379
+#endif
+
+/* Linux syscalls for x86_64 */
+#elif defined(ARCH_X86_64_H)
+#ifndef __NR_ioprio_set
+#define __NR_ioprio_set 251
+#define __NR_ioprio_get 252
+#endif
+
+#ifndef __NR_fadvise64
+#define __NR_fadvise64 221
+#endif
+
+#ifndef __NR_sys_splice
+#define __NR_sys_splice 275
+#define __NR_sys_tee 276
+#define __NR_sys_vmsplice 278
+#endif
+
+#ifndef __NR_shmget
+#define __NR_shmget 29
+#define __NR_shmat 30
+#define __NR_shmctl 31
+#define __NR_shmdt 67
+#endif
+
+#ifndef __NR_preadv2
+#define __NR_preadv2 327
+#endif
+#ifndef __NR_pwritev2
+#define __NR_pwritev2 328
+#endif
+
+/* Linux syscalls for ppc */
+#elif defined(ARCH_PPC_H)
+#ifndef __NR_ioprio_set
+#define __NR_ioprio_set 273
+#define __NR_ioprio_get 274
+#endif
+
+#ifndef __NR_fadvise64
+#define __NR_fadvise64 233
+#endif
+
+#ifndef __NR_sys_splice
+#define __NR_sys_splice 283
+#define __NR_sys_tee 284
+#define __NR_sys_vmsplice 285
+#endif
+
+/* Linux syscalls for ia64 */
+#elif defined(ARCH_IA64_H)
+#ifndef __NR_ioprio_set
+#define __NR_ioprio_set 1274
+#define __NR_ioprio_get 1275
+#endif
+
+#ifndef __NR_fadvise64
+#define __NR_fadvise64 1234
+#endif
+
+#ifndef __NR_sys_splice
+#define __NR_sys_splice 1297
+#define __NR_sys_tee 1301
+#define __NR_sys_vmsplice 1302
+#endif
+
+#ifndef __NR_preadv2
+#define __NR_preadv2 1348
+#endif
+#ifndef __NR_pwritev2
+#define __NR_pwritev2 1349
+#endif
+
+/* Linux syscalls for alpha */
+#elif defined(ARCH_ALPHA_H)
+#ifndef __NR_ioprio_set
+#define __NR_ioprio_set 442
+#define __NR_ioprio_get 443
+#endif
+
+#ifndef __NR_fadvise64
+#define __NR_fadvise64 413
+#endif
+
+#ifndef __NR_sys_splice
+#define __NR_sys_splice 468
+#define __NR_sys_tee 470
+#define __NR_sys_vmsplice 471
+#endif
+
+/* Linux syscalls for s390 */
+#elif defined(ARCH_S390_H)
+#ifndef __NR_ioprio_set
+#define __NR_ioprio_set 282
+#define __NR_ioprio_get 283
+#endif
+
+#ifndef __NR_fadvise64
+#define __NR_fadvise64 253
+#endif
+
+#ifndef __NR_sys_splice
+#define __NR_sys_splice 306
+#define __NR_sys_tee 308
+#define __NR_sys_vmsplice 309
+#endif
+
+#ifndef __NR_preadv2
+#define __NR_preadv2 376
+#endif
+#ifndef __NR_pwritev2
+#define __NR_pwritev2 377
+#endif
+
+/* Linux syscalls for sparc */
+#elif defined(ARCH_SPARC_H)
+#ifndef __NR_ioprio_set
+#define __NR_ioprio_set 196
+#define __NR_ioprio_get 218
+#endif
+
+#ifndef __NR_fadvise64
+#define __NR_fadvise64 209
+#endif
+
+#ifndef __NR_sys_splice
+#define __NR_sys_splice 232
+#define __NR_sys_tee 280
+#define __NR_sys_vmsplice 25
+#endif
+
+#ifndef __NR_preadv2
+#define __NR_preadv2 358
+#endif
+#ifndef __NR_pwritev2
+#define __NR_pwritev2 359
+#endif
+
+/* Linux syscalls for sparc64 */
+#elif defined(ARCH_SPARC64_H)
+#ifndef __NR_ioprio_set
+#define __NR_ioprio_set 196
+#define __NR_ioprio_get 218
+#endif
+
+#ifndef __NR_fadvise64
+#define __NR_fadvise64 209
+#endif
+
+#ifndef __NR_sys_splice
+#define __NR_sys_splice 232
+#define __NR_sys_tee 280
+#define __NR_sys_vmsplice 25
+#endif
+
+#ifndef __NR_preadv2
+#define __NR_preadv2 358
+#endif
+#ifndef __NR_pwritev2
+#define __NR_pwritev2 359
+#endif
+
+/* Linux syscalls for arm */
+#elif defined(ARCH_ARM_H)
+#ifndef __NR_ioprio_set
+#define __NR_ioprio_set 314
+#define __NR_ioprio_get 315
+#endif
+
+#ifndef __NR_fadvise64
+#define __NR_fadvise64 270
+#endif
+
+#ifndef __NR_sys_splice
+#define __NR_sys_splice 340
+#define __NR_sys_tee 342
+#define __NR_sys_vmsplice 343
+#endif
+
+#ifndef __NR_preadv2
+#define __NR_preadv2 392
+#endif
+#ifndef __NR_pwritev2
+#define __NR_pwritev2 393
+#endif
+
+/* Linux syscalls for mips */
+#elif defined(ARCH_MIPS64_H)
+#ifndef __NR_ioprio_set
+#define __NR_ioprio_set 314
+#define __NR_ioprio_get 315
+#endif
+
+#ifndef __NR_fadvise64
+#define __NR_fadvise64 215
+#endif
+
+#ifndef __NR_sys_splice
+#define __NR_sys_splice 263
+#define __NR_sys_tee 265
+#define __NR_sys_vmsplice 266
+#endif
+
+/* Linux syscalls for sh */
+#elif defined(ARCH_SH_H)
+#ifndef __NR_ioprio_set
+#define __NR_ioprio_set 288
+#define __NR_ioprio_get 289
+#endif
+
+#ifndef __NR_fadvise64
+#define __NR_fadvise64 250
+#endif
+
+#ifndef __NR_sys_splice
+#define __NR_sys_splice 313
+#define __NR_sys_tee 315
+#define __NR_sys_vmsplice 316
+#endif
+
+/* Linux syscalls for hppa */
+#elif defined(ARCH_HPPA_H)
+#ifndef __NR_ioprio_set
+#define __NR_ioprio_set 267
+#define __NR_ioprio_get 268
+#endif
+
+#ifndef __NR_fadvise64
+#define __NR_fadvise64 236
+#endif
+
+#ifndef __NR_sys_splice
+#define __NR_sys_splice 291
+#define __NR_sys_tee 293
+#define __NR_sys_vmsplice 294
+#endif
+
+/* Linux syscalls for aarch64 */
+#elif defined(ARCH_AARCH64_H)
+#ifndef __NR_ioprio_set
+#define __NR_ioprio_set 30
+#define __NR_ioprio_get 31
+#endif
+
+#else
+#warning "Unknown architecture"
+#endif
+
+#endif /* FIO_OS_LINUX_SYSCALL_H */
#include <linux/major.h>
#include <byteswap.h>
+#include "./os-linux-syscall.h"
#include "binject.h"
#include "../file.h"