aboutsummaryrefslogtreecommitdiffstats
path: root/libsimple/memalign.h
diff options
context:
space:
mode:
Diffstat (limited to 'libsimple/memalign.h')
-rw-r--r--libsimple/memalign.h82
1 files changed, 82 insertions, 0 deletions
diff --git a/libsimple/memalign.h b/libsimple/memalign.h
new file mode 100644
index 0000000..046edd4
--- /dev/null
+++ b/libsimple/memalign.h
@@ -0,0 +1,82 @@
+/* See LICENSE file for copyright and license details. */
+
+_LIBSIMPLE_GCC_ONLY(__attribute__((__malloc__, __alloc_align__(1), __warn_unused_result__)))
+static inline void *libsimple_vmemalignn(size_t __alignment, size_t __n, va_list __ap)
+{ return libsimple_vmemalignzn(0, __alignment, __n, __ap); }
+#ifndef vmemalignn
+# define vmemalignn libsimple_vmemalignn
+#endif
+
+_LIBSIMPLE_GCC_ONLY(__attribute__((__malloc__, __alloc_align__(1), __alloc_size__(2), __warn_unused_result__)))
+static inline void *libsimple_memalign(size_t __alignment, size_t __n)
+{ return libsimple_memalignz(0, __alignment, __n); }
+#ifndef memalign
+# define memalign libsimple_memalign
+#endif
+
+_LIBSIMPLE_GCC_ONLY(__attribute__((__malloc__, __alloc_align__(1), __warn_unused_result__)))
+static inline void *
+libsimple_memalignn(size_t __alignment, size_t __n, ... /*, (size_t)0 */)
+{
+ va_list __ap;
+ va_start(__ap, __n);
+ return libsimple_vmemalignn(__alignment, __n, __ap);
+ va_end(__ap);
+}
+#ifndef memalignn
+# define memalignn libsimple_memalignn
+#endif
+
+_LIBSIMPLE_GCC_ONLY(__attribute__((__malloc__, __alloc_align__(2), __alloc_size__(3), __warn_unused_result__, __returns_nonnull__)))
+static inline void *libsimple_enmemalign(int __status, size_t __alignment, size_t __n)
+{ return libsimple_enmemalignz(__status, 0, __alignment, __n); }
+#ifndef enmemalign
+# define enmemalign libsimple_enmemalign
+#endif
+
+_LIBSIMPLE_GCC_ONLY(__attribute__((__malloc__, __alloc_align__(2), __warn_unused_result__, __returns_nonnull__)))
+static inline void *libsimple_envmemalignn(int __status, size_t __alignment, size_t __n, va_list __ap)
+{ return libsimple_envmemalignzn(__status, 0, __alignment, __n, __ap); }
+#ifndef envmemalignn
+# define envmemalignn libsimple_envmemalignn
+#endif
+
+_LIBSIMPLE_GCC_ONLY(__attribute__((__malloc__, __alloc_align__(2), __warn_unused_result__, __returns_nonnull__)))
+static inline void *
+libsimple_enmemalignn(int __status, size_t __alignment, size_t __n, ... /*, (size_t)0 */)
+{
+ va_list __ap;
+ va_start(__ap, __n);
+ return libsimple_envmemalignzn(__status, 0, __alignment, __n, __ap);
+ va_end(__ap);
+}
+#ifndef enmemalignn
+# define enmemalignn libsimple_enmemalignn
+#endif
+
+_LIBSIMPLE_GCC_ONLY(__attribute__((__malloc__, __alloc_align__(1), __alloc_size__(2), __warn_unused_result__, __returns_nonnull__)))
+static inline void *libsimple_ememalign(size_t __alignment, size_t __n)
+{ return libsimple_enmemalign(libsimple_default_failure_exit, __alignment, __n); }
+#ifndef ememalign
+# define ememalign libsimple_ememalign
+#endif
+
+_LIBSIMPLE_GCC_ONLY(__attribute__((__malloc__, __alloc_align__(1), __warn_unused_result__, __returns_nonnull__)))
+static inline void *libsimple_evmemalignn(size_t __alignment, size_t __n, va_list __ap)
+{ return libsimple_envmemalignn(libsimple_default_failure_exit, __alignment, __n, __ap); }
+#ifndef evmemalignn
+# define evmemalignn libsimple_evmemalignn
+#endif
+
+_LIBSIMPLE_GCC_ONLY(__attribute__((__malloc__, __alloc_align__(1), __warn_unused_result__, __returns_nonnull__)))
+static inline void *
+libsimple_ememalignn(size_t __alignment, size_t __n, ... /*, (size_t)0 */)
+{
+ va_list __ap;
+ va_start(__ap, __n);
+ return libsimple_evmemalignn(__alignment, __n, __ap);
+ va_end(__ap);
+}
+#ifndef ememalignn
+# define ememalignn libsimple_ememalignn
+#endif