Use <features.h> and _GNU_SOURCE to determine if _ISOC11_SOURCE is available, and with that, aligned_alloc(). --- src/libsystemd-bus/bus-kernel.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/src/libsystemd-bus/bus-kernel.c b/src/libsystemd-bus/bus-kernel.c index 086877e..bb63a4e 100644 --- a/src/libsystemd-bus/bus-kernel.c +++ b/src/libsystemd-bus/bus-kernel.c @@ -19,11 +19,17 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ +#define _GNU_SOURCE +#include <features.h> + #ifdef HAVE_VALGRIND_MEMCHECK_H #include <valgrind/memcheck.h> #endif #include <fcntl.h> +#ifndef _ISOC11_SOURCE +# include <malloc.h> /* For memalign(), if needed. */ +#endif #include "util.h" @@ -39,6 +45,15 @@ (uint8_t *)(item) < (uint8_t *)(head) + (head)->size; \ item = KDBUS_ITEM_NEXT(item)) +static void *align(size_t alignment, size_t size) +{ +#ifdef _ISOC11_SOURCE + return aligned_alloc(alignment, size); +#else + return memalign(alignment, size); +#endif +} + static int parse_unique_name(const char *s, uint64_t *id) { int r; @@ -199,7 +214,7 @@ static int bus_message_setup_kmsg(sd_bus *b, sd_bus_message *m) { sz += ALIGN8(offsetof(struct kdbus_msg_item, str) + dl + 1); } - m->kdbus = aligned_alloc(8, sz); + m->kdbus = align(8, sz); if (!m->kdbus) return -ENOMEM; @@ -500,7 +515,7 @@ int bus_kernel_read_message(sd_bus *bus, sd_bus_message **m) { for (;;) { void *q; - q = aligned_alloc(8, sz); + q = align(8, sz); if (!q) return -errno; -- 1.7.10.1 _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel