Whamcloud - gitweb
ext2fs: add ext2fs_get_memalign() function
authorTheodore Ts'o <tytso@mit.edu>
Thu, 23 Sep 2010 16:56:46 +0000 (12:56 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Thu, 23 Sep 2010 20:38:22 +0000 (16:38 -0400)
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
debian/e2fslibs.symbols
lib/ext2fs/ext2fs.h

index c5a6a0b..12d7d32 100644 (file)
@@ -176,6 +176,7 @@ libext2fs.so.2 e2fslibs #MINVER#
  ext2fs_get_inode_bitmap_start@Base 1.37
  ext2fs_get_library_version@Base 1.37
  ext2fs_get_mem@Base 1.37
+ ext2fs_get_memalign@Base 1.41.13
  ext2fs_get_next_inode@Base 1.37
  ext2fs_get_next_inode_full@Base 1.37
  ext2fs_get_num_dirs@Base 1.37
index 2674941..bc0d7ce 100644 (file)
@@ -52,6 +52,7 @@ extern "C" {
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <errno.h>
 
 #if EXT2_FLAT_INCLUDES
 #include "e2_types.h"
@@ -1147,7 +1148,8 @@ extern errcode_t ext2fs_write_bb_FILE(ext2_badblocks_list bb_list,
 
 /* inline functions */
 extern errcode_t ext2fs_get_mem(unsigned long size, void *ptr);
-extern errcode_t ext2fs_get_array(unsigned long count, unsigned long size, void *ptr);
+extern errcode_t ext2fs_get_memalign(unsigned long size,
+                                    unsigned long align, void *ptr);
 extern errcode_t ext2fs_free_mem(void *ptr);
 extern errcode_t ext2fs_resize_mem(unsigned long old_size,
                                   unsigned long size, void *ptr);
@@ -1202,6 +1204,21 @@ _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;
+       if (retval = posix_memalign((void **) ptr, align, size)) {
+               if (retval == ENOMEM)
+                       return EXT2_ET_NO_MEMORY;
+               return retval;
+       }
+       return 0;
+}
+
 _INLINE_ errcode_t ext2fs_get_array(unsigned long count, unsigned long size, void *ptr)
 {
        if (count && (-1UL)/count<size)