sys/stdatomic.h: be nicer to c++

Use of stdatomic.h is undefined in C++, even the C++ 2020 standard does not
list stdatomic.h as a C library header supported by the language.  More,
there are some subtle differences between the <atomic> C++ header, and
C11+ stdatomic.h provided features.

Nonetheless, it is a quality of the implementation aspect, so let mis-users
mis-use stdatomic.h as they want, by making a compat shim for _Bool.

PR:	262683
Reported by:	yuri
Reviewed by:	dim, emaste
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Differential revision:	https://reviews.freebsd.org/D34686
This commit is contained in:
Konstantin Belousov 2022-03-28 00:16:15 +03:00
parent 8bcffb86c7
commit c1a24b9dbe

View File

@ -163,6 +163,11 @@ atomic_signal_fence(memory_order __order __unused)
#endif
}
#if defined(__cplusplus) && !defined(_Bool)
#define _Bool bool
#define __bool_locally_defined
#endif
/*
* 7.17.5 Lock-free property.
*/
@ -406,4 +411,9 @@ atomic_flag_clear(volatile atomic_flag *__object)
}
#endif /* !_KERNEL */
#ifdef __bool_locally_defined
#undef _Bool
#undef __bool_locally_defined
#endif
#endif /* !_STDATOMIC_H_ */