#define fio_unlikely(x) __builtin_expect(!!(x), 0)
+/*
+ * Check at compile time that something is of a particular type.
+ * Always evaluates to 1 so you may use it easily in comparisons.
+ */
+#define typecheck(type,x) \
+({ type __dummy; \
+ typeof(x) __dummy2; \
+ (void)(&__dummy == &__dummy2); \
+ 1; \
+})
+
#endif
#ifdef FIO_INTERNAL
#define le16_to_cpu(val) ({ \
+ typecheck(uint16_t, val); \
__le16_to_cpu(val); \
})
#define le32_to_cpu(val) ({ \
+ typecheck(uint32_t, val); \
__le32_to_cpu(val); \
})
#define le64_to_cpu(val) ({ \
- __le64_to_cpu(val); \
+ typecheck(uint64_t, val); \
+ __le64_to_cpu(val); \
})
#endif
#define cpu_to_le16(val) ({ \
+ typecheck(uint16_t, val); \
__cpu_to_le16(val); \
})
#define cpu_to_le32(val) ({ \
+ typecheck(uint32_t, val); \
__cpu_to_le32(val); \
})
#define cpu_to_le64(val) ({ \
+ typecheck(uint64_t, val); \
__cpu_to_le64(val); \
})