io_uring: remove cachehit information
[fio.git] / lib / memalign.c
index 1d1ba9ba2013ea2c3fdba579931ff1743989cdd7..537bb9fb1b92930e862426156f7b7b46c4cee8f9 100644 (file)
@@ -1,22 +1,28 @@
-#include <stdlib.h>
 #include <assert.h>
-#include <inttypes.h>
+#include <stdlib.h>
 
 #include "memalign.h"
-#include "../fio.h"
+#include "smalloc.h"
+
+#define PTR_ALIGN(ptr, mask)   \
+       (char *)((uintptr_t)((ptr) + (mask)) & ~(mask))
 
 struct align_footer {
        unsigned int offset;
 };
 
-void *fio_memalign(size_t alignment, size_t size)
+void *fio_memalign(size_t alignment, size_t size, bool shared)
 {
        struct align_footer *f;
        void *ptr, *ret = NULL;
 
        assert(!(alignment & (alignment - 1)));
 
-       ptr = malloc(size + alignment + size + sizeof(*f) - 1);
+       if (shared)
+               ptr = smalloc(size + alignment + sizeof(*f) - 1);
+       else
+               ptr = malloc(size + alignment + sizeof(*f) - 1);
+
        if (ptr) {
                ret = PTR_ALIGN(ptr, alignment - 1);
                f = ret + size;
@@ -26,9 +32,12 @@ void *fio_memalign(size_t alignment, size_t size)
        return ret;
 }
 
-void fio_memfree(void *ptr, size_t size)
+void fio_memfree(void *ptr, size_t size, bool shared)
 {
        struct align_footer *f = ptr + size;
 
-       free(ptr - f->offset);
+       if (shared)
+               sfree(ptr - f->offset);
+       else
+               free(ptr - f->offset);
 }