Module Name: src
Committed By: riastradh
Date: Sat May 11 13:26:54 UTC 2024
Modified Files:
src/sys/sys: cdefs.h
Log Message:
sys/cdefs.h: Make various macros work more robustly.
Use predefined __-namespace macros inside __BIT, __type_min,
__type_max, and __type_fit:
- Use __CHAR_BIT__ instead of NBBY so this works without sys/types.h
and without _NETBSD_SOURCE.
- Use __INTMAX_TYPE__, __UINTMAX_TYPE__ instead of intmax_t, uintmax_t
so this works without stdint.h.
No functional change intended.
To generate a diff of this commit:
cvs rdiff -u -r1.161 -r1.162 src/sys/sys/cdefs.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/sys/cdefs.h
diff -u src/sys/sys/cdefs.h:1.161 src/sys/sys/cdefs.h:1.162
--- src/sys/sys/cdefs.h:1.161 Wed May 1 07:43:41 2024
+++ src/sys/sys/cdefs.h Sat May 11 13:26:54 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: cdefs.h,v 1.161 2024/05/01 07:43:41 rillig Exp $ */
+/* $NetBSD: cdefs.h,v 1.162 2024/05/11 13:26:54 riastradh Exp $ */
/* * Copyright (c) 1991, 1993
* The Regents of the University of California. All rights reserved.
@@ -645,9 +645,12 @@
#ifndef __ASSEMBLER__
/* __BIT(n): nth bit, where __BIT(0) == 0x1. */
-#define __BIT(__n) \
- (((uintmax_t)(__n) >= NBBY * sizeof(uintmax_t)) ? 0 : \
- ((uintmax_t)1 << (uintmax_t)((__n) & (NBBY * sizeof(uintmax_t) - 1))))
+#define __BIT(__n) \
+ (((__UINTMAX_TYPE__)(__n) >= __CHAR_BIT__ * sizeof(__UINTMAX_TYPE__)) \
+ ? 0 \
+ : ((__UINTMAX_TYPE__)1 << \
+ (__UINTMAX_TYPE__)((__n) & \
+ (__CHAR_BIT__ * sizeof(__UINTMAX_TYPE__) - 1))))
/* __MASK(n): first n bits all set, where __MASK(4) == 0b1111. */
#define __MASK(__n) (__BIT(__n) - 1)
@@ -720,8 +723,8 @@
*/
#define __MACROUSE(e) (/*LINTED*/(void)sizeof((long)(e)))
-#define __type_mask(t) (/*LINTED*/sizeof(t) < sizeof(intmax_t) ? \
- (~((1ULL << (sizeof(t) * NBBY)) - 1)) : 0ULL)
+#define __type_mask(t) (/*LINTED*/sizeof(t) < sizeof(__INTMAX_TYPE__) ? \
+ (~((1ULL << (sizeof(t) * __CHAR_BIT__)) - 1)) : 0ULL)
#ifndef __ASSEMBLER__
static __inline long long __zeroll(void) { return 0; }
@@ -733,8 +736,8 @@ static __inline unsigned long long __zer
#define __negative_p(x) (!((x) > 0) && ((x) != 0))
-#define __type_min_s(t) ((t)((1ULL << (sizeof(t) * NBBY - 1))))
-#define __type_max_s(t) ((t)~((1ULL << (sizeof(t) * NBBY - 1))))
+#define __type_min_s(t) ((t)((1ULL << (sizeof(t) * __CHAR_BIT__ - 1))))
+#define __type_max_s(t) ((t)~((1ULL << (sizeof(t) * __CHAR_BIT__ - 1))))
#define __type_min_u(t) ((t)0ULL)
#define __type_max_u(t) ((t)~0ULL)
#define __type_is_signed(t) (/*LINTED*/__type_min_s(t) + (t)1 < (t)1)
@@ -742,13 +745,18 @@ static __inline unsigned long long __zer
#define __type_max(t) (__type_is_signed(t) ? __type_max_s(t) : __type_max_u(t))
-#define __type_fit_u(t, a) (/*LINTED*/!__negative_p(a) && \
- (uintmax_t)((a) + __zeroull()) <= (uintmax_t)__type_max_u(t))
-
-#define __type_fit_s(t, a) (/*LINTED*/__negative_p(a) ? \
- ((intmax_t)((a) + __zeroll()) >= (intmax_t)__type_min_s(t)) : \
- ((intmax_t)((a) + __zeroll()) >= (intmax_t)0 && \
- (intmax_t)((a) + __zeroll()) <= (intmax_t)__type_max_s(t)))
+#define __type_fit_u(t, a) \
+ (/*LINTED*/!__negative_p(a) && \
+ ((__UINTMAX_TYPE__)((a) + __zeroull()) <= \
+ (__UINTMAX_TYPE__)__type_max_u(t)))
+
+#define __type_fit_s(t, a) \
+ (/*LINTED*/__negative_p(a) \
+ ? ((__INTMAX_TYPE__)((a) + __zeroll()) >= \
+ (__INTMAX_TYPE__)__type_min_s(t)) \
+ : ((__INTMAX_TYPE__)((a) + __zeroll()) >= (__INTMAX_TYPE__)0 && \
+ ((__INTMAX_TYPE__)((a) + __zeroll()) <= \
+ (__INTMAX_TYPE__)__type_max_s(t))))
/*
* return true if value 'a' fits in type 't'