[CRIU] [PATCH 3/3] headers: Move xmalloc to common

Pavel Emelyanov xemul at virtuozzo.com
Thu Oct 27 09:24:40 PDT 2016


Signed-off-by: Pavel Emelyanov <xemul at virtuozzo.com>
---
 criu/include/xmalloc.h   | 67 +---------------------------------------------
 include/common/xmalloc.h | 69 ++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 70 insertions(+), 66 deletions(-)
 create mode 100644 include/common/xmalloc.h

diff --git a/criu/include/xmalloc.h b/criu/include/xmalloc.h
index e5ce279..09838b5 100644
--- a/criu/include/xmalloc.h
+++ b/criu/include/xmalloc.h
@@ -1,67 +1,2 @@
-#ifndef __CR_XMALLOC_H__
-#define __CR_XMALLOC_H__
-
-#include <stdlib.h>
-#include <string.h>
-
 #include "log.h"
-
-#define __xalloc(op, size, ...)						\
-	({								\
-		void *___p = op( __VA_ARGS__ );				\
-		if (!___p)						\
-			pr_err("%s: Can't allocate %li bytes\n",	\
-			       __func__, (long)(size));			\
-		___p;							\
-	})
-
-#define xstrdup(str)		__xalloc(strdup, strlen(str) + 1, str)
-#define xmalloc(size)		__xalloc(malloc, size, size)
-#define xzalloc(size)		__xalloc(calloc, size, 1, size)
-#define xrealloc(p, size)	__xalloc(realloc, size, p, size)
-
-#define xfree(p)		free(p)
-
-#define xrealloc_safe(pptr, size)					\
-	({								\
-		int __ret = -1;						\
-		void *new = xrealloc(*pptr, size);			\
-		if (new) {						\
-			*pptr = new;					\
-			__ret = 0;					\
-		}							\
-		__ret;							\
-	 })
-
-#define xmemdup(ptr, size)						\
-	({								\
-		void *new = xmalloc(size);				\
-		if (new)						\
-			memcpy(new, ptr, size);				\
-		new;							\
-	 })
-
-#define memzero_p(p)		memset(p, 0, sizeof(*p))
-#define memzero(p, size)	memset(p, 0, size)
-
-/*
- * Helper for allocating trees with single xmalloc.
- * This one advances the void *pointer on s bytes and
- * returns the previous value. Use like this
- *
- * m = xmalloc(total_size);
- * a = xptr_pull(&m, tree_root_t);
- * a->b = xptr_pull(&m, leaf_a_t);
- * a->c = xptr_pull(&m, leaf_c_t);
- * ...
- */
-static inline void *xptr_pull_s(void **m, size_t s)
-{
-	void *ret = (*m);
-	(*m) += s;
-	return ret;
-}
-
-#define xptr_pull(m, type)	xptr_pull_s(m, sizeof(type))
-
-#endif /* __CR_XMALLOC_H__ */
+#include "common/xmalloc.h"
diff --git a/include/common/xmalloc.h b/include/common/xmalloc.h
new file mode 100644
index 0000000..d377c83
--- /dev/null
+++ b/include/common/xmalloc.h
@@ -0,0 +1,69 @@
+#ifndef __COMMON_XMALLOC_H__
+#define __COMMON_XMALLOC_H__
+
+#include <stdlib.h>
+#include <string.h>
+
+#ifndef pr_err
+#error "Macro pr_err is needed."
+#endif
+
+#define __xalloc(op, size, ...)						\
+	({								\
+		void *___p = op( __VA_ARGS__ );				\
+		if (!___p)						\
+			pr_err("%s: Can't allocate %li bytes\n",	\
+			       __func__, (long)(size));			\
+		___p;							\
+	})
+
+#define xstrdup(str)		__xalloc(strdup, strlen(str) + 1, str)
+#define xmalloc(size)		__xalloc(malloc, size, size)
+#define xzalloc(size)		__xalloc(calloc, size, 1, size)
+#define xrealloc(p, size)	__xalloc(realloc, size, p, size)
+
+#define xfree(p)		free(p)
+
+#define xrealloc_safe(pptr, size)					\
+	({								\
+		int __ret = -1;						\
+		void *new = xrealloc(*pptr, size);			\
+		if (new) {						\
+			*pptr = new;					\
+			__ret = 0;					\
+		}							\
+		__ret;							\
+	 })
+
+#define xmemdup(ptr, size)						\
+	({								\
+		void *new = xmalloc(size);				\
+		if (new)						\
+			memcpy(new, ptr, size);				\
+		new;							\
+	 })
+
+#define memzero_p(p)		memset(p, 0, sizeof(*p))
+#define memzero(p, size)	memset(p, 0, size)
+
+/*
+ * Helper for allocating trees with single xmalloc.
+ * This one advances the void *pointer on s bytes and
+ * returns the previous value. Use like this
+ *
+ * m = xmalloc(total_size);
+ * a = xptr_pull(&m, tree_root_t);
+ * a->b = xptr_pull(&m, leaf_a_t);
+ * a->c = xptr_pull(&m, leaf_c_t);
+ * ...
+ */
+static inline void *xptr_pull_s(void **m, size_t s)
+{
+	void *ret = (*m);
+	(*m) += s;
+	return ret;
+}
+
+#define xptr_pull(m, type)	xptr_pull_s(m, sizeof(type))
+
+#endif /* __CR_XMALLOC_H__ */
-- 
2.1.4



More information about the CRIU mailing list