Move src to src/lib, include to src/include, test to src/test.
[deb_shairplay.git] / src / lib / memalign.h
CommitLineData
2340bcd3
JVH
1#ifndef MEMALIGN_H
2#define MEMALIGN_H
3
4#if defined(WIN32)
5
6#define SYSTEM_GET_PAGESIZE(ret) do {\
7 SYSTEM_INFO si;\
8 GetSystemInfo(&si);\
9 ret = si.dwPageSize;\
10} while(0)
11#define SYSTEM_GET_TIME(ret) ret = timeGetTime()
12
13#define ALIGNED_MALLOC(memptr, alignment, size) do {\
14 char *ptr = malloc(sizeof(void*) + (size) + (alignment)-1);\
15 memptr = NULL;\
16 if (ptr) {\
17 size_t ptrval = (size_t)ptr + sizeof(void*) + (alignment)-1;\
18 ptrval = ptrval / (alignment) * (alignment);\
19 memptr = (void *)ptrval;\
20 *(((void **)memptr)-1) = ptr;\
21 }\
22} while(0)
23#define ALIGNED_FREE(memptr) free(*(((void **)memptr)-1))
24
25#else
26
27#define SYSTEM_GET_PAGESIZE(ret) ret = sysconf(_SC_PAGESIZE)
28#define SYSTEM_GET_TIME(ret) do {\
29 struct timeval tv;\
30 gettimeofday(&tv, NULL);\
31 ret = (unsigned int)(tv.tv_sec*1000 + tv.tv_usec/1000);\
32} while(0)
33
34#define ALIGNED_MALLOC(memptr, alignment, size) if (posix_memalign((void **)&memptr, alignment, size)) memptr = NULL
35#define ALIGNED_FREE(memptr) free(memptr)
36
37#endif
38
39#endif