diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2024-04-19 14:58:38 -0400 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2024-04-19 15:50:45 -0400 |
commit | 0d8bf80364a23d9b90ab6c034625b60e4c566c61 (patch) | |
tree | efe7a9f5eae510dd18cfbea4cd6af4f2c1883e4c | |
parent | c35d0c2ed5578b180e17c37588a047fd013cc619 (diff) | |
download | bfs-0d8bf80364a23d9b90ab6c034625b60e4c566c61.tar.xz |
config: Check for aligned_alloc()
-rw-r--r-- | config/aligned-alloc.c | 8 | ||||
-rw-r--r-- | config/header.mk | 1 | ||||
-rw-r--r-- | src/alloc.c | 6 |
3 files changed, 12 insertions, 3 deletions
diff --git a/config/aligned-alloc.c b/config/aligned-alloc.c new file mode 100644 index 0000000..4460038 --- /dev/null +++ b/config/aligned-alloc.c @@ -0,0 +1,8 @@ +// Copyright © Tavian Barnes <tavianator@tavianator.com> +// SPDX-License-Identifier: 0BSD + +#include <stdlib.h> + +int main(void) { + return !aligned_alloc(_Alignof(void *), sizeof(void *)); +} diff --git a/config/header.mk b/config/header.mk index 06b8f7f..86a4dc5 100644 --- a/config/header.mk +++ b/config/header.mk @@ -10,6 +10,7 @@ include config/exports.mk # All header fragments we generate HEADERS := \ ${GEN}/acl-is-trivial-np.h \ + ${GEN}/aligned-alloc.h \ ${GEN}/confstr.h \ ${GEN}/fdclosedir.h \ ${GEN}/getdents.h \ diff --git a/src/alloc.c b/src/alloc.c index ec8608f..ebaff38 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -24,12 +24,12 @@ static void *xmemalign(size_t align, size_t size) { bfs_assert(align >= sizeof(void *)); bfs_assert(is_aligned(align, size)); -#if __APPLE__ +#if BFS_HAS_ALIGNED_ALLOC + return aligned_alloc(align, size); +#else void *ptr = NULL; errno = posix_memalign(&ptr, align, size); return ptr; -#else - return aligned_alloc(align, size); #endif } |