]> pd.if.org Git - liblfds/blob - liblfds/liblfds6.1.1/liblfds611/src/lfds611_liblfds/lfds611_liblfds_aligned_malloc.c
Initial import (all versions, including the new 7.1.0)
[liblfds] / liblfds / liblfds6.1.1 / liblfds611 / src / lfds611_liblfds / lfds611_liblfds_aligned_malloc.c
1 #include "lfds611_liblfds_internal.h"\r
2 \r
3 \r
4 \r
5 \r
6 \r
7 /****************************************************************************/\r
8 void *lfds611_liblfds_aligned_malloc( size_t size, size_t align_in_bytes )\r
9 {\r
10   void\r
11     *original_memory,\r
12     *memory;\r
13 \r
14   size_t\r
15     offset;\r
16 \r
17   // TRD : size can be any value in its range\r
18   // TRD : align_in_bytes can be any value in its range\r
19 \r
20   original_memory = memory = lfds611_abstraction_malloc( size + sizeof(void *) + align_in_bytes );\r
21 \r
22   if( memory != NULL )\r
23   {\r
24     memory = (void **) memory + 1;\r
25     offset = align_in_bytes - (size_t) memory % align_in_bytes;\r
26     memory = (unsigned char *) memory + offset;\r
27     *( (void **) memory - 1 ) = original_memory;\r
28   }\r
29 \r
30   return( memory );\r
31 }\r
32 \r