allow zero-input (i.e. tone generator) processors to be added
[ardour2.git] / libs / pbd / malign.cc
blobb8aa61c9978fef3722b7abade347a23be1906e29
1 #include "libpbd-config.h"
3 #include <cstring>
4 #include <cerrno>
6 #include "pbd/malign.h"
7 #include "pbd/error.h"
9 #include "i18n.h"
11 using namespace PBD;
13 #ifdef __x86_64__
14 static const int CPU_CACHE_ALIGN = 64;
15 #else
16 static const int CPU_CACHE_ALIGN = 16; /* arguably 32 on most arches, but it matters less */
17 #endif
19 int cache_aligned_malloc (void** memptr, size_t size)
21 #ifdef NO_POSIX_MEMALIGN
22 if (((*memptr) = malloc (size)) == 0) {
23 fatal << string_compose (_("Memory allocation error: malloc (%1 * %2) failed (%3)"),
24 CPU_CACHE_ALIGN, size, strerror (errno)) << endmsg;
25 return errno;
26 } else {
27 return 0;
29 #else
30 if (posix_memalign (memptr, CPU_CACHE_ALIGN, size)) {
31 fatal << string_compose (_("Memory allocation error: posix_memalign (%1 * %2) failed (%3)"),
32 CPU_CACHE_ALIGN, size, strerror (errno)) << endmsg;
35 return 0;
36 #endif