C11: add aligned_alloc()
Change-Id: If648c0e27ed946874d393e8e33a4548b70c8ecdb Reviewed-on: https://review.haiku-os.org/c/haiku/+/3377 Reviewed-by: Adrien Destugues <[email protected]>
This commit is contained in:
committed by
Adrien Destugues
parent
26ab0d051c
commit
6878792ae4
@@ -12,4 +12,9 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
|
||||||
|
#define _ISOC11_SOURCE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#endif // _FEATURES_H
|
#endif // _FEATURES_H
|
||||||
|
|||||||
@@ -49,6 +49,9 @@ extern void *calloc(size_t numElements, size_t size);
|
|||||||
extern void free(void *pointer);
|
extern void free(void *pointer);
|
||||||
extern void *malloc(size_t size);
|
extern void *malloc(size_t size);
|
||||||
extern int posix_memalign(void **_pointer, size_t alignment, size_t size);
|
extern int posix_memalign(void **_pointer, size_t alignment, size_t size);
|
||||||
|
#ifdef _ISOC11_SOURCE
|
||||||
|
extern void *aligned_alloc(size_t alignment, size_t size);
|
||||||
|
#endif
|
||||||
extern void *realloc(void *oldPointer, size_t newSize);
|
extern void *realloc(void *oldPointer, size_t newSize);
|
||||||
|
|
||||||
/* process termination */
|
/* process termination */
|
||||||
|
|||||||
@@ -443,6 +443,17 @@ memalign(size_t alignment, size_t size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
extern "C" void *
|
||||||
|
aligned_alloc(size_t alignment, size_t size)
|
||||||
|
{
|
||||||
|
if (size % alignment != 0) {
|
||||||
|
__set_errno(B_BAD_VALUE);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return memalign(alignment, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
extern "C" int
|
extern "C" int
|
||||||
posix_memalign(void **_pointer, size_t alignment, size_t size)
|
posix_memalign(void **_pointer, size_t alignment, size_t size)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user