X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;ds=sidebyside;f=os%2Fos.h;h=d6ce9a778acf518b6811d13e88b093204b292a9d;hb=203913ea773a19dce4a885204e9d7681b89429fe;hp=4bbdd623a987c174122b2577b2899332605a0a0c;hpb=4b0c257cd785cf7af4a4722f41bd45174283f69d;p=fio.git diff --git a/os/os.h b/os/os.h index 4bbdd623..d6ce9a77 100644 --- a/os/os.h +++ b/os/os.h @@ -2,10 +2,24 @@ #define FIO_OS_H #include +#include #include #include #include +enum { + os_linux = 1, + os_aix, + os_freebsd, + os_hpux, + os_mac, + os_netbsd, + os_solaris, + os_windows, + + os_nr, +}; + #if defined(__linux__) #include "os-linux.h" #elif defined(__FreeBSD__) @@ -18,6 +32,8 @@ #include "os-mac.h" #elif defined(_AIX) #include "os-aix.h" +#elif defined(__hpux) +#include "os-hpux.h" #elif defined(__CYGWIN__) #include "os-windows.h" #else @@ -30,6 +46,9 @@ #ifdef FIO_HAVE_POSIXAIO #include +#ifndef FIO_OS_HAVE_AIOCB_TYPEDEF +typedef struct aiocb os_aiocb_t; +#endif #endif #ifdef FIO_HAVE_SGIO @@ -110,6 +129,75 @@ typedef unsigned long os_cpu_mask_t; #define FIO_MAX_JOBS 2048 #endif +#ifndef FIO_OS_HAVE_SOCKLEN_T +typedef socklen_t fio_socklen_t; +#endif + +#ifdef FIO_USE_GENERIC_SWAP +static inline uint16_t fio_swap16(uint16_t val) +{ + return (val << 8) | (val >> 8); +} + +static inline uint32_t fio_swap32(uint32_t val) +{ + val = ((val & 0xff00ff00UL) >> 8) | ((val & 0x00ff00ffUL) << 8); + + return (val >> 16) | (val << 16); +} + +static inline uint64_t fio_swap64(uint64_t val) +{ + val = ((val & 0xff00ff00ff00ff00ULL) >> 8) | + ((val & 0x00ff00ff00ff00ffULL) << 8); + val = ((val & 0xffff0000ffff0000ULL) >> 16) | + ((val & 0x0000ffff0000ffffULL) << 16); + + return (val >> 32) | (val << 32); +} +#endif + +#ifdef FIO_LITTLE_ENDIAN +#define __le16_to_cpu(x) (x) +#define __le32_to_cpu(x) (x) +#define __le64_to_cpu(x) (x) +#define __cpu_to_le16(x) (x) +#define __cpu_to_le32(x) (x) +#define __cpu_to_le64(x) (x) +#else +#define __le16_to_cpu(x) fio_swap16(x) +#define __le32_to_cpu(x) fio_swap32(x) +#define __le64_to_cpu(x) fio_swap64(x) +#define __cpu_to_le16(x) fio_swap16(x) +#define __cpu_to_le32(x) fio_swap32(x) +#define __cpu_to_le64(x) fio_swap64(x) +#endif + +#define le16_to_cpu(val) ({ \ + uint16_t *__val = &(val); \ + __le16_to_cpu(*__val); \ +}) +#define le32_to_cpu(val) ({ \ + uint32_t *__val = &(val); \ + __le32_to_cpu(*__val); \ +}) +#define le64_to_cpu(val) ({ \ + uint64_t *__val = &(val); \ + __le64_to_cpu(*__val); \ +}) +#define cpu_to_le16(val) ({ \ + uint16_t *__val = &(val); \ + __cpu_to_le16(*__val); \ +}) +#define cpu_to_le32(val) ({ \ + uint32_t *__val = &(val); \ + __cpu_to_le32(*__val); \ +}) +#define cpu_to_le64(val) ({ \ + uint64_t *__val = &(val); \ + __cpu_to_le64(*__val); \ +}) + #ifndef FIO_HAVE_BLKTRACE static inline int is_blktrace(const char *fname) { @@ -178,4 +266,18 @@ static inline unsigned long long get_fs_size(const char *path) } #endif +#ifndef FIO_HAVE_CPU_ONLINE_SYSCONF +static inline unsigned int cpus_online(void) +{ + return sysconf(_SC_NPROCESSORS_ONLN); +} +#endif + +#ifndef FIO_HAVE_GETTID +static inline int gettid(void) +{ + return getpid(); +} +#endif + #endif