From: Ilya Dryomov Date: Thu, 11 Jun 2015 13:03:01 +0000 (+0300) Subject: crush: add crush_compat.h X-Git-Tag: v9.0.3~152^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=69316a938724c86a526d14c0607f97d2ea6548fa;p=ceph.git crush: add crush_compat.h Move all the cruft that is necessary to compile shared files both in kernel and userspace into a new crush_compat.h. Also add a stub for div64_s64() and limits for linux fixed width types. Signed-off-by: Ilya Dryomov --- diff --git a/src/crush/Makefile.am b/src/crush/Makefile.am index 616a00a93de2..5da6f17f280e 100644 --- a/src/crush/Makefile.am +++ b/src/crush/Makefile.am @@ -16,9 +16,10 @@ noinst_HEADERS += \ crush/CrushWrapper.i \ crush/builder.h \ crush/crush.h \ + crush/crush_compat.h \ + crush/crush_ln_table.h \ crush/grammar.h \ crush/hash.h \ - crush/crush_ln_table.h \ crush/mapper.h \ crush/sample.txt \ crush/types.h diff --git a/src/crush/crush.c b/src/crush/crush.c index c400a410b0d8..f3f7f6d4a15d 100644 --- a/src/crush/crush.c +++ b/src/crush/crush.c @@ -1,16 +1,11 @@ - #ifdef __KERNEL__ # include +# include #else -# include -# include -# define kfree(x) do { if (x) free(x); } while (0) -# define BUG_ON(x) assert(!(x)) -# include "include/int_types.h" +# include "crush_compat.h" +# include "crush.h" #endif -#include "crush.h" - const char *crush_bucket_alg_name(int alg) { switch (alg) { diff --git a/src/crush/crush.h b/src/crush/crush.h index 3eac8f8b9982..9c9a13492070 100644 --- a/src/crush/crush.h +++ b/src/crush/crush.h @@ -1,7 +1,11 @@ #ifndef CEPH_CRUSH_CRUSH_H #define CEPH_CRUSH_CRUSH_H -#include "include/int_types.h" +#ifdef __KERNEL__ +# include +#else +# include "crush_compat.h" +#endif /* * CRUSH is a pseudo-random data distribution algorithm that diff --git a/src/crush/crush_compat.h b/src/crush/crush_compat.h new file mode 100644 index 000000000000..08eb4eab94f6 --- /dev/null +++ b/src/crush/crush_compat.h @@ -0,0 +1,39 @@ +#ifndef CEPH_CRUSH_COMPAT_H +#define CEPH_CRUSH_COMPAT_H + +#include "include/int_types.h" + +#include +#include +#include +#include + +/* asm-generic/bug.h */ + +#define BUG_ON(x) assert(!(x)) + +/* linux/kernel.h */ + +#define U8_MAX ((__u8)~0U) +#define S8_MAX ((__s8)(U8_MAX>>1)) +#define S8_MIN ((__s8)(-S8_MAX - 1)) +#define U16_MAX ((__u16)~0U) +#define S16_MAX ((__s16)(U16_MAX>>1)) +#define S16_MIN ((__s16)(-S16_MAX - 1)) +#define U32_MAX ((__u32)~0U) +#define S32_MAX ((__s32)(U32_MAX>>1)) +#define S32_MIN ((__s32)(-S32_MAX - 1)) +#define U64_MAX ((__u64)~0ULL) +#define S64_MAX ((__s64)(U64_MAX>>1)) +#define S64_MIN ((__s64)(-S64_MAX - 1)) + +/* linux/math64.h */ + +#define div64_s64(dividend, divisor) ((dividend) / (divisor)) + +/* linux/slab.h */ + +#define kmalloc(size, flags) malloc(size) +#define kfree(x) do { if (x) free(x); } while (0) + +#endif /* CEPH_CRUSH_COMPAT_H */ diff --git a/src/crush/crush_ln_table.h b/src/crush/crush_ln_table.h index e643b49446fc..aae534c901a4 100644 --- a/src/crush/crush_ln_table.h +++ b/src/crush/crush_ln_table.h @@ -10,17 +10,14 @@ * */ -#include "include/int_types.h" - -#if defined(__linux__) -#include -#elif defined(__FreeBSD__) -#include -#endif - #ifndef CEPH_CRUSH_LN_H #define CEPH_CRUSH_LN_H +#ifdef __KERNEL__ +# include +#else +# include "crush_compat.h" +#endif /* * RH_LH_tbl[2*k] = 2^48/(1.0+k/128.0) diff --git a/src/crush/hash.c b/src/crush/hash.c index 9b15321d7839..ed123af49eba 100644 --- a/src/crush/hash.c +++ b/src/crush/hash.c @@ -1,13 +1,9 @@ -#include "include/int_types.h" - -#if defined(__linux__) -#include -#elif defined(__FreeBSD__) -#include +#ifdef __KERNEL__ +# include +#else +# include "hash.h" #endif -#include "hash.h" - /* * Robert Jenkins' function for mixing 32-bit values * http://burtleburtle.net/bob/hash/evahash.html diff --git a/src/crush/hash.h b/src/crush/hash.h index 91e884230d5d..d1d90258242e 100644 --- a/src/crush/hash.h +++ b/src/crush/hash.h @@ -1,6 +1,12 @@ #ifndef CEPH_CRUSH_HASH_H #define CEPH_CRUSH_HASH_H +#ifdef __KERNEL__ +# include +#else +# include "crush_compat.h" +#endif + #define CRUSH_HASH_RJENKINS1 0 #define CRUSH_HASH_DEFAULT CRUSH_HASH_RJENKINS1 diff --git a/src/crush/mapper.c b/src/crush/mapper.c index 7ab18d82c96d..82956586fa39 100644 --- a/src/crush/mapper.c +++ b/src/crush/mapper.c @@ -15,26 +15,17 @@ # include # include # include -# ifndef dprintk -# define dprintk(args...) -# endif +# include +# include #else -# include -# include -# include -# include -# define BUG_ON(x) assert(!(x)) -# define dprintk(args...) /* printf(args) */ -# define kmalloc(x, f) malloc(x) -# define kfree(x) free(x) -/*# define DEBUG_INDEP*/ -# include "include/int_types.h" +# include "crush_compat.h" +# include "crush.h" +# include "hash.h" #endif - -#include "crush.h" -#include "hash.h" #include "crush_ln_table.h" +#define dprintk(args...) /* printf(args) */ + /* * Implement the core CRUSH mapping algorithm. */