8 /****************************************************************************/
9 void *util_aligned_malloc( lfds700_pal_uint_t size, lfds700_pal_uint_t align_in_bytes )
18 // TRD : size can be any value in its range
19 // TRD : align_in_bytes can be any value in its range
21 /* TRD : helper function to provide aligned allocations
25 original_memory = memory = util_malloc_wrapper( size + sizeof(void *) + align_in_bytes );
29 memory = (void **) memory + 1;
30 offset = align_in_bytes - (lfds700_pal_uint_t) memory % align_in_bytes;
31 memory = (char unsigned *) memory + offset;
32 *( (void **) memory - 1 ) = original_memory;
42 /****************************************************************************/
43 void util_aligned_free( void *memory )
45 assert( memory != NULL );
47 // TRD : the "void *" stored above memory points to the root of the allocation
48 free( *( (void **) memory - 1 ) );
57 /****************************************************************************/
58 void *util_malloc_wrapper( lfds700_pal_uint_t size )
63 // TRD : size can be any value in its range
65 memory = malloc( size );
69 puts( "malloc() failed, exiting." );