UINT64_MAX and friends available in the kernel
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 14 Mar 2013 20:08:12 +0000 (13:08 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 14 Mar 2013 20:08:12 +0000 (13:08 -0700)
kern/include/stdint.h

index 44fd3db..fa77350 100644 (file)
@@ -1,5 +1,29 @@
-/* GHETTO: To our grandchildren, we are sorry for this
- * We do this since newlib has it's own stdint that conflicts with the kernel
- * and roslib's types. */
-
 #include <arch/types.h>
+
+/* ISO C99: 7.18 Integer types, chunk from glibc's stdint.h */
+# if __WORDSIZE == 64
+#  define __INT64_C(c) c ## L
+#  define __UINT64_C(c)        c ## UL
+# else
+#  define __INT64_C(c) c ## LL
+#  define __UINT64_C(c)        c ## ULL
+# endif
+
+/* Limits of integral types.  */
+
+/* Minimum of signed integral types.  */
+# define INT8_MIN              (-128)
+# define INT16_MIN             (-32767-1)
+# define INT32_MIN             (-2147483647-1)
+# define INT64_MIN             (-__INT64_C(9223372036854775807)-1)
+/* Maximum of signed integral types.  */
+# define INT8_MAX              (127)
+# define INT16_MAX             (32767)
+# define INT32_MAX             (2147483647)
+# define INT64_MAX             (__INT64_C(9223372036854775807))
+
+/* Maximum of unsigned integral types.  */
+# define UINT8_MAX             (255)
+# define UINT16_MAX            (65535)
+# define UINT32_MAX            (4294967295U)
+# define UINT64_MAX            (__UINT64_C(18446744073709551615))