Allocate aligned memory
#include <stdlib.h> int posix_memalign( void ** memptr, size_t alignment, size_t size );
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
The posix_memalign() function allocates size bytes aligned on a boundary specified by alignment. It returns a pointer to the allocated memory in memptr.
The buffer allocated by posix_memalign() is contiguous in virtual address space, but not physical memory. Since some platforms don't allocate memory in 4 KB page sizes, you shouldn't assume that the memory allocated will be physically contiguous if you specify a size of 4 KB or less.
You can obtain the physical address of the start of the buffer using mem_offset() with fd=NOFD.
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |
errno, free(), malloc(), memalign()