ext2_types.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. /*
  2. * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. /*
  8. * If linux/types.h is already been included, assume it has defined
  9. * everything we need. (cross fingers) Other header files may have
  10. * also defined the types that we need.
  11. */
  12. #if (!defined(_LINUX_TYPES_H) && !defined(_BLKID_TYPES_H) && !defined(_EXT2_TYPES_H))
  13. # define _EXT2_TYPES_H
  14. # define __S8_TYPEDEF __signed__ char
  15. # define __U8_TYPEDEF unsigned char
  16. # define __S16_TYPEDEF __signed__ short
  17. # define __U16_TYPEDEF unsigned short
  18. # define __S32_TYPEDEF __signed__ int
  19. # define __U32_TYPEDEF unsigned int
  20. # define __S64_TYPEDEF __signed__ long long
  21. # define __U64_TYPEDEF unsigned long long
  22. # ifdef __U8_TYPEDEF
  23. typedef __U8_TYPEDEF __u8;
  24. # else
  25. typedef unsigned char __u8;
  26. # endif
  27. # ifdef __S8_TYPEDEF
  28. typedef __S8_TYPEDEF __s8;
  29. # else
  30. typedef signed char __s8;
  31. # endif
  32. # ifdef __U16_TYPEDEF
  33. typedef __U16_TYPEDEF __u16;
  34. # else
  35. # if (4 == 2)
  36. typedef unsigned int __u16;
  37. # else
  38. # if (2 == 2)
  39. typedef unsigned short __u16;
  40. # else
  41. ? == error : undefined 16 bit type
  42. # endif /* SIZEOF_SHORT == 2 */
  43. # endif /* SIZEOF_INT == 2 */
  44. # endif /* __U16_TYPEDEF */
  45. # ifdef __S16_TYPEDEF
  46. typedef __S16_TYPEDEF __s16;
  47. # else
  48. # if (4 == 2)
  49. typedef int __s16;
  50. # else
  51. # if (2 == 2)
  52. typedef short __s16;
  53. # else
  54. ? == error
  55. : undefined 16 bit type
  56. # endif /* SIZEOF_SHORT == 2 */
  57. # endif /* SIZEOF_INT == 2 */
  58. # endif /* __S16_TYPEDEF */
  59. # ifdef __U32_TYPEDEF
  60. typedef __U32_TYPEDEF __u32;
  61. # else
  62. # if (4 == 4)
  63. typedef unsigned int __u32;
  64. # else
  65. # if (4 == 4)
  66. typedef unsigned long __u32;
  67. # else
  68. # if (2 == 4)
  69. typedef unsigned short __u32;
  70. # else
  71. ? == error
  72. : undefined 32 bit type
  73. # endif /* SIZEOF_SHORT == 4 */
  74. # endif /* SIZEOF_LONG == 4 */
  75. # endif /* SIZEOF_INT == 4 */
  76. # endif /* __U32_TYPEDEF */
  77. # ifdef __S32_TYPEDEF
  78. typedef __S32_TYPEDEF __s32;
  79. # else
  80. # if (4 == 4)
  81. typedef int __s32;
  82. # else
  83. # if (4 == 4)
  84. typedef long __s32;
  85. # else
  86. # if (2 == 4)
  87. typedef short __s32;
  88. # else
  89. ? == error
  90. : undefined 32 bit type
  91. # endif /* SIZEOF_SHORT == 4 */
  92. # endif /* SIZEOF_LONG == 4 */
  93. # endif /* SIZEOF_INT == 4 */
  94. # endif /* __S32_TYPEDEF */
  95. # ifdef __U64_TYPEDEF
  96. typedef __U64_TYPEDEF __u64;
  97. # else
  98. # if (4 == 8)
  99. typedef unsigned int __u64;
  100. # else
  101. # if (4 == 8)
  102. typedef unsigned long __u64;
  103. # else
  104. # if (8 == 8)
  105. typedef unsigned long long __u64;
  106. # endif /* SIZEOF_LONG_LONG == 8 */
  107. # endif /* SIZEOF_LONG == 8 */
  108. # endif /* SIZEOF_INT == 8 */
  109. # endif /* __U64_TYPEDEF */
  110. # ifdef __S64_TYPEDEF
  111. typedef __S64_TYPEDEF __s64;
  112. # else
  113. # if (4 == 8)
  114. typedef int __s64;
  115. # else
  116. # if (4 == 8)
  117. typedef long __s64;
  118. # else
  119. # if (8 == 8)
  120. # if defined(__GNUC__)
  121. typedef __signed__ long long __s64;
  122. # else
  123. typedef signed long long __s64;
  124. # endif /* __GNUC__ */
  125. # endif /* SIZEOF_LONG_LONG == 8 */
  126. # endif /* SIZEOF_LONG == 8 */
  127. # endif /* SIZEOF_INT == 8 */
  128. # endif /* __S64_TYPEDEF */
  129. # undef __S8_TYPEDEF
  130. # undef __U8_TYPEDEF
  131. # undef __S16_TYPEDEF
  132. # undef __U16_TYPEDEF
  133. # undef __S32_TYPEDEF
  134. # undef __U32_TYPEDEF
  135. # undef __S64_TYPEDEF
  136. # undef __U64_TYPEDEF
  137. #endif /* _*_TYPES_H */
  138. /* These defines are needed for the public ext2fs.h header file */
  139. #define HAVE_SYS_TYPES_H 1
  140. #undef WORDS_BIGENDIAN