diff options
| author | Robert Clausecker <fuz@FreeBSD.org> | 2025-11-27 17:57:02 +0000 |
|---|---|---|
| committer | Robert Clausecker <fuz@FreeBSD.org> | 2026-01-01 20:47:33 +0000 |
| commit | 72609bb2bb25710871157792715213ef71a51521 (patch) | |
| tree | 8533492b75257f19dd31db8d7bd0619427290740 | |
| parent | 35787967e87679511c906fbcb7dbccb31fd1ef33 (diff) | |
uchar.h: add char8_t
A type similar to char16 and char32_t, for compliance with C23.
The related type atomic_char8_t is added to stdatomic.h.
As char8_t is always unsigned char, I've skipped adding __char8_t.
This can be added, too, if desired.
Reviewed by: imp
Approved by: markj (mentor)
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D53952
(cherry picked from commit f0e541118c374869a8226eaa1320bb6eda248a20)
| -rw-r--r-- | include/uchar.h | 5 | ||||
| -rw-r--r-- | sys/sys/stdatomic.h | 6 |
2 files changed, 11 insertions, 0 deletions
diff --git a/include/uchar.h b/include/uchar.h index 951c6339abec..ebb2c89776b8 100644 --- a/include/uchar.h +++ b/include/uchar.h @@ -32,6 +32,11 @@ #include <sys/cdefs.h> #include <sys/_types.h> +#if __ISO_C_VISIBLE >= 2023 && !defined(_CHAR8_T_DECLARED) +typedef unsigned char char8_t; +#define _CHAR8_T_DECLARED +#endif + #ifndef _CHAR16_T_DECLARED typedef __char16_t char16_t; #define _CHAR16_T_DECLARED diff --git a/sys/sys/stdatomic.h b/sys/sys/stdatomic.h index 099097ea84a4..67107f47e6b3 100644 --- a/sys/sys/stdatomic.h +++ b/sys/sys/stdatomic.h @@ -54,6 +54,9 @@ #ifdef __GCC_ATOMIC_CHAR_LOCK_FREE #define ATOMIC_CHAR_LOCK_FREE __GCC_ATOMIC_CHAR_LOCK_FREE #endif +#if __ISO_C_VISIBLE >= 2023 && defined(__GCC_ATOMIC_CHAR8_T_LOCK_FREE) +#define ATOMIC_CHAR8_T_LOCK_FREE __GCC_ATOMIC_CHAR8_T_LOCK_FREE +#endif #ifdef __GCC_ATOMIC_CHAR16_T_LOCK_FREE #define ATOMIC_CHAR16_T_LOCK_FREE __GCC_ATOMIC_CHAR16_T_LOCK_FREE #endif @@ -199,6 +202,9 @@ typedef _Atomic(long) atomic_long; typedef _Atomic(unsigned long) atomic_ulong; typedef _Atomic(long long) atomic_llong; typedef _Atomic(unsigned long long) atomic_ullong; +#if __ISO_C_VISIBLE >= 2023 +typedef _Atomic(unsigned char) atomic_char8_t; +#endif typedef _Atomic(__char16_t) atomic_char16_t; typedef _Atomic(__char32_t) atomic_char32_t; typedef _Atomic(___wchar_t) atomic_wchar_t; |
