1/*
2 * If linux/types.h is already been included, assume it has defined
3 * everything we need.  (cross fingers)  Other header files may have
4 * also defined the types that we need.
5 */
6#if (!defined(_LINUX_TYPES_H) && !defined(_BLKID_TYPES_H) && \
7	!defined(_EXT2_TYPES_H))
8#define _EXT2_TYPES_H
9
10@ASM_TYPES_HEADER@
11
12#ifndef HAVE___U8
13#define HAVE___U8
14#ifdef __U8_TYPEDEF
15typedef __U8_TYPEDEF __u8;
16#else
17typedef unsigned char __u8;
18#endif
19#endif /* HAVE___U8 */
20
21#ifndef HAVE___S8
22#define HAVE___S8
23#ifdef __S8_TYPEDEF
24typedef __S8_TYPEDEF __s8;
25#else
26typedef signed char __s8;
27#endif
28#endif /* HAVE___S8 */
29
30#ifndef HAVE___U16
31#define HAVE___U16
32#ifdef __U16_TYPEDEF
33typedef __U16_TYPEDEF __u16;
34#else
35#if (@SIZEOF_INT@ == 2)
36typedef	unsigned int	__u16;
37#else
38#if (@SIZEOF_SHORT@ == 2)
39typedef	unsigned short	__u16;
40#else
41#undef HAVE___U16
42  ?==error: undefined 16 bit type
43#endif /* SIZEOF_SHORT == 2 */
44#endif /* SIZEOF_INT == 2 */
45#endif /* __U16_TYPEDEF */
46#endif /* HAVE___U16 */
47
48#ifndef HAVE___S16
49#define HAVE___S16
50#ifdef __S16_TYPEDEF
51typedef __S16_TYPEDEF __s16;
52#else
53#if (@SIZEOF_INT@ == 2)
54typedef	int		__s16;
55#else
56#if (@SIZEOF_SHORT@ == 2)
57typedef	short		__s16;
58#else
59#undef HAVE___S16
60  ?==error: undefined 16 bit type
61#endif /* SIZEOF_SHORT == 2 */
62#endif /* SIZEOF_INT == 2 */
63#endif /* __S16_TYPEDEF */
64#endif /* HAVE___S16 */
65
66#ifndef HAVE___U32
67#define HAVE___U32
68#ifdef __U32_TYPEDEF
69typedef __U32_TYPEDEF __u32;
70#else
71#if (@SIZEOF_INT@ == 4)
72typedef	unsigned int	__u32;
73#else
74#if (@SIZEOF_LONG@ == 4)
75typedef	unsigned long	__u32;
76#else
77#if (@SIZEOF_SHORT@ == 4)
78typedef	unsigned short	__u32;
79#else
80#undef HAVE___U32
81 ?== error: undefined 32 bit type
82#endif /* SIZEOF_SHORT == 4 */
83#endif /* SIZEOF_LONG == 4 */
84#endif /* SIZEOF_INT == 4 */
85#endif /* __U32_TYPEDEF */
86#endif /* HAVE___U32 */
87
88#ifndef HAVE___S32
89#define HAVE___S32
90#ifdef __S32_TYPEDEF
91typedef __S32_TYPEDEF __s32;
92#else
93#if (@SIZEOF_INT@ == 4)
94typedef	int		__s32;
95#else
96#if (@SIZEOF_LONG@ == 4)
97typedef	long		__s32;
98#else
99#if (@SIZEOF_SHORT@ == 4)
100typedef	short		__s32;
101#else
102#undef HAVE___S32
103 ?== error: undefined 32 bit type
104#endif /* SIZEOF_SHORT == 4 */
105#endif /* SIZEOF_LONG == 4 */
106#endif /* SIZEOF_INT == 4 */
107#endif /* __S32_TYPEDEF */
108#endif /* HAVE___S32 */
109
110#ifndef HAVE___U64
111#define HAVE___U64
112#ifdef __U64_TYPEDEF
113typedef __U64_TYPEDEF __u64;
114#else
115#if (@SIZEOF_INT@ == 8)
116typedef unsigned int	__u64;
117#else
118#if (@SIZEOF_LONG_LONG@ == 8)
119typedef unsigned long long	__u64;
120#else
121#if (@SIZEOF_LONG@ == 8)
122typedef unsigned long	__u64;
123#else
124#undef HAVE___U64
125 ?== error: undefined 64 bit type
126#endif /* SIZEOF_LONG_LONG == 8 */
127#endif /* SIZEOF_LONG == 8 */
128#endif /* SIZEOF_INT == 8 */
129#endif /* __U64_TYPEDEF */
130#endif /* HAVE___U64 */
131
132#ifndef HAVE___S64
133#define HAVE___S64
134#ifdef __S64_TYPEDEF
135typedef __S64_TYPEDEF __s64;
136#else
137#if (@SIZEOF_INT@ == 8)
138typedef int		__s64;
139#else
140#if (@SIZEOF_LONG_LONG@ == 8)
141#if defined(__GNUC__)
142typedef __signed__ long long	__s64;
143#else
144typedef signed long long	__s64;
145#endif /* __GNUC__ */
146#else
147#if (@SIZEOF_LONG@ == 8)
148typedef long		__s64;
149#else
150#undef HAVE___S64
151 ?== error: undefined 64 bit type
152#endif /* SIZEOF_LONG_LONG == 8 */
153#endif /* SIZEOF_LONG == 8 */
154#endif /* SIZEOF_INT == 8 */
155#endif /* __S64_TYPEDEF */
156#endif /* HAVE___S64 */
157
158#undef __S8_TYPEDEF
159#undef __U8_TYPEDEF
160#undef __S16_TYPEDEF
161#undef __U16_TYPEDEF
162#undef __S32_TYPEDEF
163#undef __U32_TYPEDEF
164#undef __S64_TYPEDEF
165#undef __U64_TYPEDEF
166
167#endif /* _*_TYPES_H */
168
169#include <stdint.h>
170
171/* endian checking stuff */
172#ifndef EXT2_ENDIAN_H_
173#define EXT2_ENDIAN_H_
174
175#ifdef __CHECKER__
176# ifndef __bitwise
177#  define __bitwise		__attribute__((bitwise))
178# endif
179#define __force			__attribute__((force))
180#else
181# ifndef __bitwise
182#  define __bitwise
183# endif
184#define __force
185#endif
186
187typedef __u16	__bitwise	__le16;
188typedef __u32	__bitwise	__le32;
189typedef __u64	__bitwise	__le64;
190typedef __u16	__bitwise	__be16;
191typedef __u32	__bitwise	__be32;
192typedef __u64	__bitwise	__be64;
193
194#endif /* EXT2_ENDIAN_H_ */
195
196@PUBLIC_CONFIG_HEADER@
197