features.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2022 Gunar Schorcht
3  *
4  * This file is subject to the terms and conditions of the GNU Lesser
5  * General Public License v2.1. See the file LICENSE in the top level
6  * directory for more details.
7  */
8 
9 #pragma once
10 
24 #ifndef DOXYGEN
25 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29 
30 #include_next <sys/features.h>
31 
32 /*
33  * When using a GCC version with POSIX thread support enabled, as is the
34  * case with Espressif's precompiled toolchains, the `_POSIX_THREAD`
35  * definition has to be reverted to prevent the inclusion of newlib's
36  * POXIS header files in system headers to avoid compilation errors.
37  * The reason is that RIOT uses its own `pthread` implementation, but
38  * its type declarations are not fully compatible with those in
39  * `sys/_pthreadtypes.h`.
40  */
41 #undef _POSIX_THREADS
42 
43 /*
44  * To avoid type conflicts between the `pthread_rwlockattr_t` definition
45  * in RIOT's `pthread` implementation and newlibc's `sys/_pthreadtypes.h`,
46  * the macro `_POSIX_READER_WRITER_LOCKS` must be undefined.
47  */
48 #undef _POSIX_READER_WRITER_LOCKS
49 
50 #ifdef __cplusplus
51 }
52 #endif
53 
54 #endif /* DOXYGEN */