00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __SYS_Align__
00020 #define __SYS_Align__
00021
00022 #include "SYS_API.h"
00023 #include <stdlib.h>
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047 #if defined(WIN32)
00048 #include <malloc.h>
00049 #include <string.h>
00050
00051 #define SYS_ALIGN16 __declspec(align(16))
00052 #define SYS_ALIGN(b) __declspec(align(b))
00053
00054 inline void *SYSamalloc(size_t b)
00055 { return _aligned_malloc(b, 16); }
00056 inline void *SYSacalloc(size_t n, size_t b)
00057 {
00058 b *= n;
00059 void *p = _aligned_malloc(b, 16);
00060 memset(p, 0, b);
00061 return p;
00062 }
00063 inline void *SYSarealloc(void *p, size_t b)
00064 { return _aligned_realloc(p, b, 16); }
00065 inline void SYSafree(void *p)
00066 { _aligned_free(p); }
00067
00068 inline void *SYSamalloc(size_t b, size_t a)
00069 { return _aligned_malloc(b, a); }
00070 inline void *SYSarealloc(void *p, size_t b, size_t a)
00071 { return _aligned_realloc(p, b, a); }
00072
00073 #elif defined(LINUX)
00074 #include <malloc.h>
00075
00076 #define SYS_ALIGN16 __attribute__ ((aligned(16)))
00077 #define SYS_ALIGN(b) __attribute__ ((aligned(b)))
00078
00079 inline void *SYSamalloc(size_t b) { return malloc(b); }
00080 inline void *SYSacalloc(size_t n, size_t b) { return calloc(n, b); }
00081 inline void *SYSarealloc(void *p, size_t b) { return realloc(p, b); }
00082 inline void SYSafree(void *p) { free(p); }
00083 inline void *SYSamalloc(size_t b, size_t a)
00084 { return memalign(a, b); }
00085 inline void *SYSarealloc(void *p, size_t b, size_t)
00086 { return SYSarealloc(p, b); }
00087
00088 #elif defined(MBSD)
00089 #include <malloc.h>
00090
00091 #define SYS_ALIGN16 __attribute__ ((aligned(16)))
00092 #define SYS_ALIGN(b) __attribute__ ((aligned(b)))
00093
00094 inline void *SYSamalloc(size_t b) { return malloc(b); }
00095 inline void *SYSacalloc(size_t n, size_t b) { return calloc(n, b); }
00096 inline void *SYSarealloc(void *p, size_t b) { return realloc(p, b); }
00097 inline void SYSafree(void *p) { free(p); }
00098 inline void *SYSamalloc(size_t b, size_t a)
00099 {
00100
00101
00102
00103 #ifdef UT_ASSERT
00104 UT_ASSERT(a<=16);
00105 #endif
00106 return malloc(b);
00107 }
00108 inline void *SYSarealloc(void *p, size_t b, size_t)
00109 { return SYSarealloc(p, b); }
00110
00111 #else
00112 #define SYS_ALIGN16
00113 #define SYS_ALIGN(b)
00114
00115 inline void *SYSamalloc(size_t b) { return malloc(b); }
00116 inline void *SYSacalloc(size_t n, size_t b) { return calloc(n, b); }
00117 inline void *SYSarealloc(void *p, size_t b) { return realloc(p, b); }
00118 inline void SYSafree(void *p) { free(p); }
00119 inline void *SYSamalloc(size_t b, size_t) { return malloc(b); }
00120 inline void *SYSarealloc(void *p, size_t b, size_t)
00121 { return SYSarealloc(p, b); }
00122 #endif
00123
00124 #endif
00125