summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2011-10-16 21:50:26 -0400
committerTheodore Ts'o <tytso@mit.edu>2011-10-16 21:50:26 -0400
commit7f21666a3da39fd335f5d4b27499d4ff76b53375 (patch)
treef6276aba6a0f68ef35fbe22a3add3c04354ed26a /lib
parent0c80c44bd08c60f3cd0ad87f12a71a75cac3bcaa (diff)
downloade2fsprogs-7f21666a3da39fd335f5d4b27499d4ff76b53375.tar.gz
libext2fs: allow ext2fs_get_memalign() to compile w/o posix_memalign()
Addresses-Sourceforge-Bug: #3219173 Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'lib')
-rw-r--r--lib/ext2fs/ext2fs.h16
-rw-r--r--lib/ext2fs/inline.c35
2 files changed, 35 insertions, 16 deletions
diff --git a/lib/ext2fs/ext2fs.h b/lib/ext2fs/ext2fs.h
index 57c5bfaf..d90c1ee1 100644
--- a/lib/ext2fs/ext2fs.h
+++ b/lib/ext2fs/ext2fs.h
@@ -1479,22 +1479,6 @@ _INLINE_ errcode_t ext2fs_get_mem(unsigned long size, void *ptr)
return 0;
}
-_INLINE_ errcode_t ext2fs_get_memalign(unsigned long size,
- unsigned long align, void *ptr)
-{
- errcode_t retval;
-
- if (align == 0)
- align = 8;
- retval = posix_memalign((void **) ptr, align, size);
- if (retval) {
- if (retval == ENOMEM)
- return EXT2_ET_NO_MEMORY;
- return retval;
- }
- return 0;
-}
-
_INLINE_ errcode_t ext2fs_get_memzero(unsigned long size, void *ptr)
{
void *pp;
diff --git a/lib/ext2fs/inline.c b/lib/ext2fs/inline.c
index 02deda18..d7869370 100644
--- a/lib/ext2fs/inline.c
+++ b/lib/ext2fs/inline.c
@@ -31,3 +31,38 @@
#define INCLUDE_INLINE_FUNCS
#include "ext2fs.h"
+/*
+ * We used to define this as an inline, but since we are now using
+ * autoconf-defined #ifdef's, we need to export this as a
+ * library-provided function exclusively.
+ */
+errcode_t ext2fs_get_memalign(unsigned long size,
+ unsigned long align, void *ptr)
+{
+ errcode_t retval;
+
+ if (align == 0)
+ align = 8;
+#ifdef HAVE_POSIX_MEMALIGN
+ retval = posix_memalign((void **) ptr, align, size);
+ if (retval) {
+ if (retval == ENOMEM)
+ return EXT2_ET_NO_MEMORY;
+ return retval;
+ }
+#else
+#ifdef HAVE_MEMALIGN
+ *ptr = memalign(align, size);
+ if (*ptr == NULL) {
+ if (errno)
+ return errno;
+ else
+ return EXT2_ET_NO_MEMORY;
+ }
+#else
+#error memalign or posix_memalign must be defined!
+#endif
+#endif
+ return 0;
+}
+