From: Vincent Dagonneau <v@vda.io>
To: linux-kernel@vger.kernel.org
Cc: w@1wt.eu, Vincent Dagonneau <v@vda.io>
Subject: [PATCH v3 2/4] tools/nolibc: Adding integer types and integer limit macros
Date: Sun, 5 Feb 2023 20:32:47 -0500 [thread overview]
Message-ID: <20230206013248.471664-3-v@vda.io> (raw)
In-Reply-To: <20230206013248.471664-1-v@vda.io>
This commit adds some of the missing integer types to stdint.h and adds
limit macros (e.g. INTN_{MIN,MAX}).
The reference used for adding these types is
https://pubs.opengroup.org/onlinepubs/009695399/basedefs/stdint.h.html.
Note that the maximum size of size_t is implementation-defined (>65535),
in this case I chose to stick with what the kernel uses in
linux/include/uapi/asm-generic/posix_types.h: unsigned int on 32bits and
unsigned long on 64bits.
---
tools/include/nolibc/stdint.h | 60 +++++++++++++++++++++++++++++++++++
1 file changed, 60 insertions(+)
diff --git a/tools/include/nolibc/stdint.h b/tools/include/nolibc/stdint.h
index 4ba264031df9..e676254d896f 100644
--- a/tools/include/nolibc/stdint.h
+++ b/tools/include/nolibc/stdint.h
@@ -21,4 +21,64 @@ typedef unsigned long uintptr_t;
typedef signed long intptr_t;
typedef signed long ptrdiff_t;
+typedef int8_t int_least8_t;
+typedef uint8_t uint_least8_t;
+typedef int16_t int_least16_t;
+typedef uint16_t uint_least16_t;
+typedef int32_t int_least32_t;
+typedef uint32_t uint_least32_t;
+typedef int64_t int_least64_t;
+typedef uint64_t uint_least64_t;
+
+typedef int64_t intmax_t;
+typedef uint64_t uintmax_t;
+
+/* limits of integral types */
+
+#define INT8_MIN (-128)
+#define INT16_MIN (-32767-1)
+#define INT32_MIN (-2147483647-1)
+#define INT64_MIN (-9223372036854775807LL-1)
+
+#define INT8_MAX (127)
+#define INT16_MAX (32767)
+#define INT32_MAX (2147483647)
+#define INT64_MAX (9223372036854775807LL)
+
+#define UINT8_MAX (255)
+#define UINT16_MAX (65535)
+#define UINT32_MAX (4294967295U)
+#define UINT64_MAX (18446744073709551615ULL)
+
+#define INT_LEAST8_MIN INT8_MIN
+#define INT_LEAST16_MIN INT16_MIN
+#define INT_LEAST32_MIN INT32_MIN
+#define INT_LEAST64_MIN INT64_MIN
+
+#define INT_LEAST8_MAX INT8_MAX
+#define INT_LEAST16_MAX INT16_MAX
+#define INT_LEAST32_MAX INT32_MAX
+#define INT_LEAST64_MAX INT64_MAX
+
+#define UINT_LEAST8_MAX UINT8_MAX
+#define UINT_LEAST16_MAX UINT16_MAX
+#define UINT_LEAST32_MAX UINT32_MAX
+#define UINT_LEAST64_MAX UINT64_MAX
+
+#define SIZE_MAX UINT64_MAX
+
+#if __WORDSIZE == 64
+ #define INTPTR_MIN INT64_MIN
+ #define INTPTR_MAX INT64_MAX
+ #define UINTPTR_MAX UINT64_MAX
+ #define PTRDIFF_MIN INT64_MIN
+ #define PTRDIFF_MAX INT64_MAX
+#else
+ #define INTPTR_MIN INT32_MIN
+ #define INTPTR_MAX INT32_MAX
+ #define UINTPTR_MAX UINT32_MAX
+ #define PTRDIFF_MIN INT32_MIN
+ #define PTRDIFF_MAX INT32_MAX
+#endif /* __WORDSIZE == 64 */
+
#endif /* _NOLIBC_STDINT_H */
--
2.39.1
next prev parent reply other threads:[~2023-02-06 1:33 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-06 1:32 [PATCH v3 0/4] tools/nolibc: Adding stdint.h, more integer types and tests Vincent Dagonneau
2023-02-06 1:32 ` [PATCH v3 1/4] tools/nolibc: Adding stdint.h Vincent Dagonneau
2023-02-06 1:32 ` Vincent Dagonneau [this message]
2023-02-06 1:32 ` [PATCH v3 3/4] tools/nolibc: Enlarging column width of tests Vincent Dagonneau
2023-02-06 1:32 ` [PATCH v3 4/4] tools/nolibc: Adding tests for the integer limits in stdint.h Vincent Dagonneau
2023-02-06 8:30 ` [PATCH v3 0/4] tools/nolibc: Adding stdint.h, more integer types and tests Willy Tarreau
2023-02-06 22:19 ` Vincent Dagonneau
2023-02-07 3:21 ` Willy Tarreau
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230206013248.471664-3-v@vda.io \
--to=v@vda.io \
--cc=linux-kernel@vger.kernel.org \
--cc=w@1wt.eu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.