|
Lines 42-47
Link Here
|
| 42 |
last_alloc = 0; |
42 |
last_alloc = 0; |
| 43 |
} |
43 |
} |
| 44 |
|
44 |
|
|
|
45 |
static char *align_ptr_to(char *ptr, unsigned long align) |
| 46 |
{ |
| 47 |
return (char *)((((unsigned long)ptr) + (align - 1UL)) & |
| 48 |
~(align - 1UL)); |
| 49 |
} |
| 50 |
|
| 51 |
int posix_memalign(void **memptr, unsigned long alignment, unsigned long size) |
| 52 |
{ |
| 53 |
char *caddr; |
| 54 |
|
| 55 |
if (alignment & (alignment - 1UL)) |
| 56 |
return -1; |
| 57 |
|
| 58 |
if (alignment & (sizeof(void *) - 1UL)) |
| 59 |
return -1; |
| 60 |
|
| 61 |
if (size == 0) |
| 62 |
{ |
| 63 |
*memptr = (void *)0; |
| 64 |
return 0; |
| 65 |
} |
| 66 |
|
| 67 |
caddr = align_ptr_to(malloc_ptr, alignment); |
| 68 |
malloc_ptr = (caddr + size); |
| 69 |
last_alloc = caddr; |
| 70 |
malloc_ptr = align_ptr_to(malloc_ptr, 8UL); |
| 71 |
|
| 72 |
*memptr = caddr; |
| 73 |
return 0; |
| 74 |
} |
| 75 |
|
| 45 |
void *malloc (unsigned int size) |
76 |
void *malloc (unsigned int size) |
| 46 |
{ |
77 |
{ |
| 47 |
char *caddr; |
78 |
char *caddr; |