#if (defined(_WIN32) || defined(_WIN64)) && !defined(__WIN32__) #define __WIN32__ #endif #ifdef __FreeBSD__ # include #elif defined(__APPLE_CC_) || defined(__MACH__) /* MacOS/X support */ # include #if __DARWIN_BYTE_ORDER == __DARWIN_LITTLE_ENDIAN # define htole16(x) (x) # define le32toh(x) (x) #elif __DARWIN_BYTE_ORDER == __DARWIN_BIG_ENDIAN # define htole16(x) __DARWIN_OSSwapInt16(x) # define le32toh(x) __DARWIN_OSSwapInt32(x) #else # error "Endianness is undefined" #endif #elif !defined(__WIN32__) # include #endif #include #include #include #include #include #include #ifndef __WIN32__ #include #endif #ifdef __ANDROID__ #define le32toh letoh32 #endif #if defined(__WIN32__) && defined(SG) struct iovec { void *iov_base; /* Pointer to data. */ size_t iov_len; /* Length of data. */ }; #endif typedef unsigned char u8; typedef unsigned short u16; typedef unsigned u32; typedef unsigned long long u64; #if defined(_WIN64) typedef long long ssize_t; #elif defined(_WIN32) typedef long ssize_t; #endif #define BUG_ON(x) assert(!(x)) #define vmalloc(x) malloc(x) #define vfree(x) free(x) #define EXPORT_SYMBOL(x) #define ARRAY_SIZE(x) (sizeof(x) / sizeof(*(x))) #if defined(__WIN32__) # define likely(x) (x) # define unlikely(x) (x) #else # define likely(x) __builtin_expect((x), 1) # define unlikely(x) __builtin_expect((x), 0) #endif #define min_t(t,x,y) ((x) < (y) ? (x) : (y)) #define max_t(t,x,y) ((x) > (y) ? (x) : (y)) #if __BYTE_ORDER == __LITTLE_ENDIAN #define __LITTLE_ENDIAN__ 1 #endif #if __LITTLE_ENDIAN__ == 1 && (defined(__LSB_VERSION__) || defined(__WIN32__)) #define htole16(x) (x) #define le32toh(x) (x) #endif #define BITS_PER_LONG (__SIZEOF_LONG__ * 8)