blob: 46fb52cb76466a87e44af68eed453d956ca43221 [file] [log] [blame]
// Copyright (c) 2012 GCT Semiconductor, Inc. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#if !defined(GLOBAL_H_20080709)
#define GLOBAL_H_20080709
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <unistd.h>
#include <wchar.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <errno.h>
#include <netinet/in.h>
#include <signal.h>
#include <net/if.h>
#include <net/if_arp.h>
#include <linux/version.h>
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,15)
#include <linux/types.h>
#endif
#include <linux/if_packet.h>
#include <assert.h>
#include <pthread.h>
#include <netinet/in.h>
#include "list.h"
#if !defined(TRUE)
#define TRUE 1
#define FALSE 0
#endif
#if !defined(TRUE)
#define TRUE 1
#define FALSE 0
#endif
#if !defined(SDK_TYPEDEF)
#define SDK_TYPEDEF
typedef char bool;
typedef unsigned char u8;
typedef unsigned short u16;
typedef unsigned int u32;
typedef unsigned long long u64;
typedef signed char s8;
typedef signed short s16;
typedef int s32;
typedef long long s64;
#if 1
typedef wchar_t uchar;
#else
typedef unsigned short uchar;
#endif
#endif
typedef struct buf_s {
void *buf;
int size;
} buf_t;
inline static void bufset(buf_t *dst, buf_t *src)
{
if (src) {
dst->buf = src->buf;
dst->size = src->size;
}
else {
dst->buf = NULL;
dst->size = 0;
}
}
typedef void (*void_func_t) (void);
#define STR(s) #s
#define B2H(x) ntohs(x)
#define H2B(x) htons(x)
#define DB2H(x) ntohl(x)
#define DH2B(x) htonl(x)
#define U82U16(b) ((((u16)((u8*)b)[0])<<8)|((u16)((u8*)b)[1]))
#define U82U24(b) ((((u32)((u8*)b)[0])<<16)|(((u32)((u8*)b)[1])<<8)|((u32)((u8*)b)[2]))
#define U82U32(b) (((u32)U82U16(b)<<16)|(u32)U82U16((u8*)(b)+2))
#define U162U8(b,v) ((((u8*)b)[0])=((u16)(v)>>8),(((u8*)b)[1])=(u8)((u16)(v)))
#define U242U8(b,v) ((((u8*)b)[0])=(u8)((u32)(v)>>16),(((u8*)b)[1])=(u8)((u32)(v)>>8),\
(((u8*)b)[2])=(u8)((u32)(v)))
#define U322U8(b,v) (U162U8((u8*)(b)+2, v), U162U8(b, (u32)v>>16))
#define set_msb(x32, x8) (x32 = ((u32)x32 & 0x00ffffff) | ((u32)x8<<24))
#define get_msb(x32) ((u8)((u32)x32>>24))
#define IS_BIG_ENDIAN() (B2H(0x1122)==0x1122)
#define MAC_FORMAT_STR "%02X%02X%02X%02X%02X%02X"
#define MAC_INPUT_STR(m) ((u8*)m)[0],((u8*)m)[1],((u8*)m)[2]\
,((u8*)m)[3],((u8*)m)[4],((u8*)m)[5]
#define sdk_malloc(s) malloc(s)
#define sdk_free(b) free(b)
#ifndef offsetof
#define offsetof(type, field) ((int)(&((type*)0)->field))
#endif
#define rangeof(type, start, end) (offsetof(type, end)-offsetof(type, start)\
+sizeof(((type*)0)->end))
#define numof_array(arr) (sizeof(arr)/sizeof(arr[0]))
#define THREAD_EXIT_MSG ((void *) -1)
//#define SDK_TEST
#endif