[PATCH 2/2] erofs-utils: introduce a unique header for definitions

Gao Xiang gaoxiang25 at huawei.com
Tue Dec 25 17:07:44 AEDT 2018


Signed-off-by: Gao Xiang <gaoxiang25 at huawei.com>
---
 configure.ac                               | 13 +++++-
 mkfs/erofs_types.h => include/erofs/defs.h | 66 ++++++++++++++++++++++--------
 include/erofs/list.h                       |  9 +---
 mkfs/Makefile.am                           |  1 -
 mkfs/erofs_cache.c                         |  2 +-
 mkfs/mkfs_erofs.h                          |  1 -
 mkfs/mkfs_file.c                           |  1 -
 7 files changed, 62 insertions(+), 31 deletions(-)
 rename mkfs/erofs_types.h => include/erofs/defs.h (59%)

diff --git a/configure.ac b/configure.ac
index 524252f..d9d6e0b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -76,7 +76,18 @@ AC_ARG_WITH(lz4,
   ])
 
 # Checks for header files.
-AC_CHECK_HEADERS([fcntl.h inttypes.h limits.h stddef.h stdint.h stdlib.h string.h sys/time.h unistd.h])
+AC_CHECK_HEADERS(m4_flatten([
+	fcntl.h
+	inttypes.h
+	linux/types.h
+	limits.h
+	stddef.h
+	stdint.h
+	stdlib.h
+	string.h
+	sys/time.h
+	unistd.h
+]))
 
 # Checks for typedefs, structures, and compiler characteristics.
 AC_C_INLINE
diff --git a/mkfs/erofs_types.h b/include/erofs/defs.h
similarity index 59%
rename from mkfs/erofs_types.h
rename to include/erofs/defs.h
index 11fa21b..f90aa19 100644
--- a/mkfs/erofs_types.h
+++ b/include/erofs/defs.h
@@ -1,31 +1,60 @@
 /* SPDX-License-Identifier: GPL-2.0+ */
 /*
- * erofs_types.h
+ * include/erofs/defs.h
  *
  * Copyright (C) 2018 HUAWEI, Inc.
  *             http://www.huawei.com/
  * Created by Li Guifu <bluce.liguifu at huawei.com>
+ * Modified by Gao Xiang <gaoxiang25 at huawei.com>
  */
-#ifndef __EROFS_TYPES_H
-#define __EROFS_TYPES_H
-#include <inttypes.h>
-#include <endian.h>
-#include <linux/types.h>
-#include <sys/types.h>
-#include <asm/types.h>
+#ifndef __EROFS_DEFS_H
+#define __EROFS_DEFS_H
+
+#include <stddef.h>
 #include <stdint.h>
-#include <sys/cdefs.h>
 #include <assert.h>
-#include <bits/byteswap.h>
+#include <inttypes.h>
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef HAVE_LINUX_TYPES_H
+#include <linux/types.h>
+#endif
+
+/*
+ * container_of - cast a member of a structure out to the containing structure
+ * @ptr:	the pointer to the member.
+ * @type:	the type of the container struct this is embedded in.
+ * @member:	the name of the member within the struct.
+ */
+#define container_of(ptr, type, member) ({			\
+	const typeof(((type *)0)->member) *__mptr = (ptr);	\
+	(type *)((char *)__mptr - offsetof(type, member)); })
 
-#define u8  uint8_t
-#define u16 uint16_t
-#define u32 uint32_t
-#define u64 uint64_t
-#define s8  int8_t
-#define s16 int16_t
-#define s32 int32_t
-#define s64 int64_t
+typedef uint8_t         u8;
+typedef uint16_t        u16;
+typedef uint32_t        u32;
+typedef uint64_t        u64;
+
+#ifndef HAVE_LINUX_TYPES_H
+typedef u8	__u8;
+typedef u16	__u16;
+typedef u32	__u32;
+typedef u64	__u64;
+typedef u16	__le16;
+typedef u32	__le32;
+typedef u64	__le64;
+typedef u16	__be16;
+typedef u32	__be32;
+typedef u64	__be64;
+#endif
+
+typedef int8_t          s8;
+typedef int16_t         s16;
+typedef int32_t         s32;
+typedef int64_t         s64;
 
 #if __BYTE_ORDER == __LITTLE_ENDIAN
 /*
@@ -68,3 +97,4 @@
 #define BITS_TO_LONGS(nr)   DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(long))
 
 #endif
+
diff --git a/include/erofs/list.h b/include/erofs/list.h
index 8dcbc5b..aeef713 100644
--- a/include/erofs/list.h
+++ b/include/erofs/list.h
@@ -9,20 +9,13 @@
 #ifndef __EROFS_LIST_HEAD_H
 #define __EROFS_LIST_HEAD_H
 
-#include <assert.h>
-#include <stddef.h>
+#include <erofs/defs.h>
 
 struct list_head {
 	struct list_head *prev;
 	struct list_head *next;
 };
 
-#define container_of(ptr, type, member)                                        \
-	({                                                                     \
-		const typeof(((type *)0)->member) *__mptr = (ptr);             \
-		(type *)((char *)__mptr - offsetof(type, member));             \
-	})
-
 #define LIST_HEAD_INIT(name)                                                   \
 	{                                                                      \
 		&(name), &(name)                                               \
diff --git a/mkfs/Makefile.am b/mkfs/Makefile.am
index faddec1..a17cc8c 100644
--- a/mkfs/Makefile.am
+++ b/mkfs/Makefile.am
@@ -19,7 +19,6 @@ noinst_HEADERS = erofs_config.h  \
 		 mkfs_erofs.h \
 		 erofs_compressor.h \
 		 erofs_io.h \
-		 erofs_types.h \
 		 mkfs_file.h
 
 mkfs_erofs_CFLAGS = -Wall -Werror -DEROFS_MKFS_VERSION=\"v1.0\" -I$(top_srcdir)/include
diff --git a/mkfs/erofs_cache.c b/mkfs/erofs_cache.c
index c8af3de..aecca98 100644
--- a/mkfs/erofs_cache.c
+++ b/mkfs/erofs_cache.c
@@ -11,7 +11,7 @@
 #include <stdint.h>
 #include <errno.h>
 
-#include "erofs_types.h"
+#include <erofs/defs.h>
 #include "erofs_cache.h"
 #include "erofs_error.h"
 #include "erofs_debug.h"
diff --git a/mkfs/mkfs_erofs.h b/mkfs/mkfs_erofs.h
index 26f891c..e8b6f1b 100644
--- a/mkfs/mkfs_erofs.h
+++ b/mkfs/mkfs_erofs.h
@@ -12,7 +12,6 @@
 
 #include <linux/limits.h>
 #include <erofs/list.h>
-#include "erofs_types.h"
 
 typedef unsigned int __u32;
 
diff --git a/mkfs/mkfs_file.c b/mkfs/mkfs_file.c
index bb9877e..382e9b6 100644
--- a/mkfs/mkfs_file.c
+++ b/mkfs/mkfs_file.c
@@ -27,7 +27,6 @@
 #ifndef O_BINARY
 #define O_BINARY 0
 #endif
-#include "erofs_types.h"
 #include <erofs/list.h>
 #include "erofs_cache.h"
 #include "erofs_compressor.h"
-- 
2.14.4



More information about the Linux-erofs mailing list