ref: ff9ce8210aeaf968e08e16ab62c388b9cf555a06
parent: c09546cceafeaa04b6536e8b31278fd3a30593c2
author: Ori Bernstein <[email protected]>
date: Fri Sep 6 14:01:52 EDT 2019
Include integer limits from generic stdint.h in system-specific stdint.h
--- a/amd64/include/ape/stdint.h
+++ b/amd64/include/ape/stdint.h
@@ -1,31 +1,9 @@
-#ifndef _STDINT_H_
-#define _STDINT_H_ 1
+#ifndef _STDINT_ARCH_H_
+#define _STDINT_ARCH_H_ 1
-typedef char int8_t;
-typedef short int16_t;
-typedef int int32_t;
-typedef long long int64_t;
-typedef unsigned char uint8_t;
-typedef unsigned short uint16_t;
-typedef unsigned int uint32_t;
-typedef unsigned long long uint64_t;
+typedef long long _intptr_t;
+typedef unsigned long long _uintptr_t;
-typedef long long intptr_t;
-typedef unsigned long long uintptr_t;
-
-#define INT8_MIN 0x80
-#define INT16_MIN 0x8000
-#define INT32_MIN 0x80000000
-#define INT64_MIN 0x8000000000000000LL
-
-#define INT8_MAX 0x7f
-#define INT16_MAX 0x7fff
-#define INT32_MAX 0x7fffffff
-#define INT64_MAX 0x7fffffffffffffffULL
-
-#define UINT8_MAX 0xff
-#define UINT16_MAX 0xffff
-#define UINT32_MAX 0xffffffffL
-#define UINT64_MAX 0xffffffffffffffffULL
+#include "/sys/include/ape/stdint.h"
#endif
--- a/arm64/include/ape/stdint.h
+++ b/arm64/include/ape/stdint.h
@@ -1,31 +1,9 @@
-#ifndef _STDINT_H_
-#define _STDINT_H_ 1
+#ifndef _STDINT_ARCH_H_
+#define _STDINT_ARCH_H_ 1
-typedef char int8_t;
-typedef short int16_t;
-typedef int int32_t;
-typedef long long int64_t;
-typedef unsigned char uint8_t;
-typedef unsigned short uint16_t;
-typedef unsigned int uint32_t;
-typedef unsigned long long uint64_t;
+typedef long long _intptr_t;
+typedef unsigned long long _uintptr_t;
-typedef long long intptr_t;
-typedef unsigned long long uintptr_t;
-
-#define INT8_MIN 0x80
-#define INT16_MIN 0x8000
-#define INT32_MIN 0x80000000
-#define INT64_MIN 0x8000000000000000LL
-
-#define INT8_MAX 0x7f
-#define INT16_MAX 0x7fff
-#define INT32_MAX 0x7fffffff
-#define INT64_MAX 0x7fffffffffffffffULL
-
-#define UINT8_MAX 0xff
-#define UINT16_MAX 0xffff
-#define UINT32_MAX 0xffffffffL
-#define UINT64_MAX 0xffffffffffffffffULL
+#include "/sys/include/ape/stdint.h"
#endif
--- a/sys/include/ape/limits.h
+++ b/sys/include/ape/limits.h
@@ -75,11 +75,12 @@
/*#define SEM_NSEMS_MAX _POSIX_SEM_NSEMS_MAX */
/*#define SEM_VALUE_MAX _POSIX_SEM_VALUE_MAX */
/*#define SIGQUEUE_MAX _POSIX_SIGQUEUE_MAX */
+#define SSIZE_MIN LONG_MIN
#define SSIZE_MAX LONG_MAX
-#define SIZE_MAX ULONG_MAX
/*#define STREAM_MAX _POSIX_STREAM_MAX */
/*#define TIMER_MAX _POSIX_TIMER_MAX */
#define TZNAME_MAX _POSIX_TZNAME_MAX
+
#ifdef _LIMITS_EXTENSION
/* some things are just too big for pedagogy (X!) */
--- a/sys/include/ape/stdint.h
+++ b/sys/include/ape/stdint.h
@@ -1,8 +1,14 @@
-#ifndef _STDINT_H_
-#define _STDINT_H_ 1
+#ifndef _STDINT_GENERIC_H_
+#define _STDINT_GENERIC_H_ 1
+/*
+ * Default for 32 bit architectures, overriden by
+ * /$objtype/include/ape/stdint.h if needed.
+ */
+#ifndef _STDINT_ARCH_H_
typedef int _intptr_t;
typedef unsigned int _uintptr_t;
+#endif
typedef char int8_t;
typedef short int16_t;
@@ -12,6 +18,7 @@
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;
typedef unsigned long long uint64_t;
+
typedef _intptr_t intptr_t;
typedef _uintptr_t uintptr_t;
@@ -34,5 +41,12 @@
#define UINT16_MAX 0xffff
#define UINT32_MAX 0xffffffffL
#define UINT64_MAX 0xffffffffffffffffULL
+
+/*
+ * Right now, all of our size_t types are 32 bit, even on
+ * 64 bit architectures.
+ */
+#define SIZE_MIN UINT32_MIN
+#define SIZE_MAX UINT32_MAX
#endif