From b77595688b752c40cc50a33471aa0e4de08da0c6 Mon Sep 17 00:00:00 2001 From: "Stephen M. Cameron" Date: Fri, 24 Feb 2012 08:17:31 +0100 Subject: [PATCH] fio: factor out endian_check Signed-off-by: Stephen M. Cameron Signed-off-by: Jens Axboe --- Makefile | 3 ++- endian_check.c | 33 +++++++++++++++++++++++++++++++++ endian_check.h | 6 ++++++ fio.c | 31 +------------------------------ 4 files changed, 42 insertions(+), 31 deletions(-) create mode 100644 endian_check.c create mode 100644 endian_check.h diff --git a/Makefile b/Makefile index 888715ed..434ad704 100644 --- a/Makefile +++ b/Makefile @@ -17,7 +17,8 @@ SOURCE := gettime.c fio.c ioengines.c init.c stat.c log.c time.c filesetup.c \ rbtree.c smalloc.c filehash.c profile.c debug.c lib/rand.c \ lib/num2str.c lib/ieee754.c $(wildcard crc/*.c) engines/cpu.c \ engines/mmap.c engines/sync.c engines/null.c engines/net.c \ - memalign.c server.c client.c iolog.c backend.c libfio.c flow.c + memalign.c server.c client.c iolog.c backend.c libfio.c flow.c \ + endian_check.c ifeq ($(UNAME), Linux) SOURCE += diskutil.c fifo.c blktrace.c helpers.c cgroup.c trim.c \ diff --git a/endian_check.c b/endian_check.c new file mode 100644 index 00000000..c6fc3e2f --- /dev/null +++ b/endian_check.c @@ -0,0 +1,33 @@ +#include +#include "os/os.h" + +int endian_check(void) +{ + union { + uint8_t c[8]; + uint64_t v; + } u; + int le = 0, be = 0; + + u.v = 0x12; + if (u.c[7] == 0x12) + be = 1; + else if (u.c[0] == 0x12) + le = 1; + +#if defined(FIO_LITTLE_ENDIAN) + if (be) + return 1; +#elif defined(FIO_BIG_ENDIAN) + if (le) + return 1; +#else + return 1; +#endif + + if (!le && !be) + return 1; + + return 0; +} + diff --git a/endian_check.h b/endian_check.h new file mode 100644 index 00000000..2e06c3b9 --- /dev/null +++ b/endian_check.h @@ -0,0 +1,6 @@ +#ifndef ENDIAN_CHECK_H +#define ENDIAN_CHECK_H + +int endian_check(void); + +#endif diff --git a/fio.c b/fio.c index 2ca4fe69..99d6209a 100644 --- a/fio.c +++ b/fio.c @@ -36,40 +36,11 @@ #include "memalign.h" #include "client.h" #include "server.h" +#include "endian_check.h" unsigned long page_mask; unsigned long page_size; -static int endian_check(void) -{ - union { - uint8_t c[8]; - uint64_t v; - } u; - int le = 0, be = 0; - - u.v = 0x12; - if (u.c[7] == 0x12) - be = 1; - else if (u.c[0] == 0x12) - le = 1; - -#if defined(FIO_LITTLE_ENDIAN) - if (be) - return 1; -#elif defined(FIO_BIG_ENDIAN) - if (le) - return 1; -#else - return 1; -#endif - - if (!le && !be) - return 1; - - return 0; -} - int main(int argc, char *argv[], char *envp[]) { long ps; -- 2.25.1