0
|
1 #include <stdio.h>
|
|
2 #include <stdlib.h>
|
|
3 #include <string.h>
|
|
4 #include <libxml/parser.h>
|
|
5 #include "object.h"
|
|
6 #include "sys.h"
|
|
7
|
|
8 #define ALIGN_16BYTE 16
|
|
9
|
|
10 int malloc_align16(void *free, void *aligned, int size)
|
|
11 {
|
|
12 char *index;
|
|
13 unsigned int *f=(unsigned int *)free,*a=(unsigned int *)aligned;
|
|
14
|
|
15 if (free == NULL || aligned == NULL || size <= 0) return(-1);
|
|
16
|
|
17 index = (char *)malloc(size + ALIGN_16BYTE);
|
|
18 if (index == NULL)
|
|
19 {
|
|
20 return(-1);
|
|
21 }
|
|
22
|
|
23 *f = *a = (unsigned int)index;
|
|
24 if (((unsigned int)index % ALIGN_16BYTE) != 0)
|
|
25 {
|
|
26 index += ALIGN_16BYTE - ((unsigned int)index % ALIGN_16BYTE);
|
|
27 *a = (unsigned int)index;
|
|
28 }
|
|
29 return(0);
|
|
30 }
|
|
31
|