#pragma once #include #include #include #include //fstat #include //fstat #include //fstat #define ALLOC(type, number) ((type *)calloc(sizeof(type), number)) #define FREE(p) {free(*p);*p=NULL;} #if(__GNUC__ * 100 + __GNUC_MINOR__ * 10 + __GNUC_PATCHLEVEL__ >= 411) #define atomic_inc(x) __sync_add_and_fetch((x),1) #define atomic_dec(x) __sync_sub_and_fetch((x),1) #define atomic_add(x,y) __sync_add_and_fetch((x),(y)) #define atomic_sub(x,y) __sync_sub_and_fetch((x),(y)) typedef int atomic_t; #define ATOMIC_INIT(i) { (i) } #define atomic_read(x) __sync_add_and_fetch((x),0) #define atomic_set(x,y) __sync_lock_test_and_set((x),y) #else #include #endif #define TRUE 1 #define FALSE 0 #ifndef MAX #define MAX(a, b) (((a) > (b)) ? (a) : (b)) #endif #ifndef MIN #define MIN(a, b) (((a) < (b)) ? (a) : (b)) #endif #ifndef offsetof #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) #endif #ifndef container_of #define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *)__mptr - offsetof(type,member) );}) #endif #define UNUSED __attribute__((unused)) const char* module_name_str(const char*name); #define maat_module (module_name_str("MAAT_Frame")) char* _maat_strdup(const char* s); char* str_unescape(char* s); inline void ipv6_ntoh(unsigned int *v6_addr) { unsigned int i=0; for(i=0;i<4;i++) { v6_addr[i]=ntohl(v6_addr[i]); } return; } int hex2bin(char *hex,int hex_len,char *binary,int size); char* str_tolower(char* string); char *strtok_r_esc(char *s, const char delim, char **save_ptr); char *str_unescape_and(char*s); char* str_unescape(char* s); pid_t gettid(void); int system_cmd_mkdir(const char* path); int system_cmd_rm(const char* src_file); int system_cmd_mv(const char* src_file,const char*dst_file); int system_cmd_cp(const char* src_file,const char*dst_file); char* md5_file(const char* filename, char* md5string); int get_column_pos(const char* line, int column_seq, size_t *offset, size_t *len);