Add a typecheck for the endianness conversions
[fio.git] / compiler / compiler.h
index 72e84197584e1aa8872e2905bc70710989443416..e1afcb424b8efa06380311cd1e865df3fb6f0d64 100644 (file)
 #define __must_check
 #endif
 
+/*
+ * Mark unused variables passed to ops functions as unused, to silence gcc
+ */
+#define fio_unused     __attribute__((__unused__))
+#define fio_init       __attribute__((constructor))
+#define fio_exit       __attribute__((destructor))
+
+#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