From: Jens Axboe Date: Tue, 8 Nov 2005 18:03:00 +0000 (+0100) Subject: [PATCH] fio: fix some arch issues X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=3782a8cde9c8aefb2fc814403aee0fbcd940c03d;p=disktools.git [PATCH] fio: fix some arch issues --- diff --git a/arch-alpha.h b/arch-alpha.h new file mode 100644 index 0000000..84eea86 --- /dev/null +++ b/arch-alpha.h @@ -0,0 +1,15 @@ +#ifndef ARCH_ALPHA_H +#define 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 + +#define nop do { } while (0) + +#endif diff --git a/arch-ia64.h b/arch-ia64.h new file mode 100644 index 0000000..af9f649 --- /dev/null +++ b/arch-ia64.h @@ -0,0 +1,27 @@ +#ifndef ARCH_IA64_H +#define 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 + +#define nop asm volatile ("hint @pause" ::: "memory"); + +#define ia64_popcnt(x) \ +({ \ + unsigned long ia64_intri_res; \ + asm ("popcnt %0=%1" : "=r" (ia64_intri_res) : "r" (x)); \ + ia64_intri_res; \ +}) + +static inline unsigned long ffz(unsigned long bitmask) +{ + return ia64_popcnt(bitmask & (~bitmask - 1)); +} + +#endif diff --git a/arch-ppc.h b/arch-ppc.h new file mode 100644 index 0000000..e822027 --- /dev/null +++ b/arch-ppc.h @@ -0,0 +1,30 @@ +#ifndef ARCH_PPC_H +#define ARCH_PPH_H + +#ifndef __NR_ioprio_set +#define __NR_ioprio_set 273 +#define __NR_ioprio_get 274 +#endif + +#ifndef __NR_fadvise64 +#define __NR_fadvise64 233 +#endif + +#define nop do { } while (0) + +static inline int __ilog2(unsigned long bitmask) +{ + int lz; + + asm ("cntlzw %0,%1" : "=r" (lz) : "r" (bitmask)); + return 31 - lz; +} + +static inline int ffz(unsigned long bitmask) +{ + if ((bitmask = ~bitmask) == 0) + return 32; + return __ilog2(bitmask & -bitmask); +} + +#endif diff --git a/arch-s390.h b/arch-s390.h new file mode 100644 index 0000000..4616ed0 --- /dev/null +++ b/arch-s390.h @@ -0,0 +1,15 @@ +#ifndef ARCH_S390_H +#define 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 + +#define nop asm volatile ("diag 0,0,68" : : : "memory") + +#endif diff --git a/arch-x86.h b/arch-x86.h new file mode 100644 index 0000000..39b77cc --- /dev/null +++ b/arch-x86.h @@ -0,0 +1,22 @@ +#ifndef ARCH_X86_H +#define 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 + +#define nop __asm__ __volatile__("rep;nop": : :"memory") + +static inline unsigned long ffz(unsigned long bitmask) +{ + __asm__("bsfl %1,%0" :"=r" (bitmask) :"r" (~bitmask)); + return bitmask; +} + +#endif diff --git a/arch-x86_64.h b/arch-x86_64.h new file mode 100644 index 0000000..aca1385 --- /dev/null +++ b/arch-x86_64.h @@ -0,0 +1,22 @@ +#ifndef ARCH_X86_64_h +#define 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 + +#define nop __asm__ __volatile__("rep;nop": : :"memory") + +static inline unsigned long ffz(unsigned long bitmask) +{ + __asm__("bsfq %1,%0" :"=r" (bitmask) :"r" (~bitmask)); + return bitmask; +} + + +#endif diff --git a/fio.c b/fio.c index 038c18c..ab5570a 100644 --- a/fio.c +++ b/fio.c @@ -42,7 +42,6 @@ #include #include #include -#include #include "arch.h" #include "list.h" @@ -569,7 +568,7 @@ static void __usec_sleep(int usec) gettimeofday(&start, NULL); while (utime_since_now(&start) < usec) - __asm__ __volatile__("rep;nop": : :"memory"); + nop; } static void usec_sleep(int usec)