features.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: 2022 Gunar Schorcht
3  * SPDX-License-Identifier: LGPL-2.1-only
4  */
5 
6 #pragma once
7 
21 #ifndef DOXYGEN
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
27 #include_next <sys/features.h>
28 
29 /*
30  * When using a GCC version with POSIX thread support enabled, as is the
31  * case with Espressif's precompiled toolchains, the `_POSIX_THREAD`
32  * definition has to be reverted to prevent the inclusion of newlib's
33  * POXIS header files in system headers to avoid compilation errors.
34  * The reason is that RIOT uses its own `pthread` implementation, but
35  * its type declarations are not fully compatible with those in
36  * `sys/_pthreadtypes.h`.
37  */
38 #undef _POSIX_THREADS
39 
40 /*
41  * To avoid type conflicts between the `pthread_rwlockattr_t` definition
42  * in RIOT's `pthread` implementation and newlibc's `sys/_pthreadtypes.h`,
43  * the macro `_POSIX_READER_WRITER_LOCKS` must be undefined.
44  */
45 #undef _POSIX_READER_WRITER_LOCKS
46 
47 #ifdef __cplusplus
48 }
49 #endif
50 
51 #endif /* DOXYGEN */