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