# endif
#endif
-#if 0
-/* Attribute __malloc__ on functions was valid as of gcc 2.96. */
-#ifndef ATTRIBUTE_MALLOC
-# if __GNUC_PREREQ (2,96)
-# define ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
-# else
-# define ATTRIBUTE_MALLOC
-# endif /* GNUC >= 2.96 */
-#endif /* ATTRIBUTE_MALLOC */
-#endif
-
#ifndef ATTRIBUTE_UNUSED
-#define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+# define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
#endif /* ATTRIBUTE_UNUSED */
#ifndef ATTRIBUTE_NORETURN
-#define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__))
+# define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__))
#endif /* ATTRIBUTE_NORETURN */
#ifndef ATTRIBUTE_PACKED
-#define ATTRIBUTE_PACKED __attribute__ ((__packed__))
+# define ATTRIBUTE_PACKED __attribute__ ((__packed__))
#endif /* ATTRIBUTE_PACKED */
#ifndef ATTRIBUTE_ALIGNED
-#define ATTRIBUTE_ALIGNED(m) __attribute__ ((__aligned__(m)))
+# define ATTRIBUTE_ALIGNED(m) __attribute__ ((__aligned__(m)))
#endif /* ATTRIBUTE_ALIGNED */
/* -fwhole-program makes all symbols local. The attribute externally_visible
forces a symbol global. */
#ifndef ATTRIBUTE_EXTERNALLY_VISIBLE
# if __GNUC_PREREQ (4,1)
-# define ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((__externally_visible__))
+# define ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((__externally_visible__))
# else
-# define ATTRIBUTE_EXTERNALLY_VISIBLE
+# define ATTRIBUTE_EXTERNALLY_VISIBLE
# endif /* GNUC >= 4.1 */
#endif /* ATTRIBUTE_EXTERNALLY_VISIBLE */
/* ---- Endian Detection ------------------------------------ */
#ifndef __APPLE__
- #include <byteswap.h>
- #include <endian.h>
+# include <byteswap.h>
+# include <endian.h>
#endif
#ifdef __BIG_ENDIAN__
- #define BB_BIG_ENDIAN 1
+# define BB_BIG_ENDIAN 1
+# define BB_LITTLE_ENDIAN 0
#elif __BYTE_ORDER == __BIG_ENDIAN
- #define BB_BIG_ENDIAN 1
+# define BB_BIG_ENDIAN 1
+# define BB_LITTLE_ENDIAN 0
#else
- #define BB_BIG_ENDIAN 0
+# define BB_BIG_ENDIAN 0
+# define BB_LITTLE_ENDIAN 1
#endif
/* ---- Networking ------------------------------------------ */
#ifndef __APPLE__
-#include <arpa/inet.h>
+# include <arpa/inet.h>
+#else
+# include <netinet/in.h>
+#endif
+
+/*----- Kernel versioning ------------------------------------*/
+#ifdef __linux__
+#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
#else
-#include <netinet/in.h>
+#error implement KERNEL_VERSION for your platform
#endif
/* ---- miscellaneous --------------------------------------- */