Use only one definition for posix extension level. _GNU_SOURCE
defines _POSIX_C_SOURCE based on glibc version, and is
the only definition needed under Linux.
Signed-off-by: Petri Savolainen <petri.savolai...@nokia.com>
---
platform/linux-generic/Makefile.am | 1 +
platform/linux-generic/arch/linux/odp_cpu_cycles.c | 2 +-
.../linux-generic/include/odp/plat/time_types.h | 2 +-
.../linux-generic/include/odp_posix_extensions.h | 36 ++++++++++++++++++++++
platform/linux-generic/odp_cpumask.c | 5 ++-
platform/linux-generic/odp_cpumask_task.c | 5 ++-
platform/linux-generic/odp_shared_memory.c | 3 +-
platform/linux-generic/odp_system_info.c | 3 +-
platform/linux-generic/odp_thread.c | 6 ++--
platform/linux-generic/odp_thrmask.c | 4 ---
platform/linux-generic/odp_time.c | 2 +-
platform/linux-generic/odp_timer.c | 4 +--
platform/linux-generic/pktio/loop.c | 4 ---
platform/linux-generic/pktio/netmap.c | 4 +--
platform/linux-generic/pktio/pcap.c | 4 +--
platform/linux-generic/pktio/pktio_common.c | 4 ---
platform/linux-generic/pktio/socket.c | 4 +--
platform/linux-generic/pktio/socket_mmap.c | 5 ++-
platform/linux-generic/pktio/tap.c | 4 +--
19 files changed, 57 insertions(+), 45 deletions(-)
create mode 100644 platform/linux-generic/include/odp_posix_extensions.h
diff --git a/platform/linux-generic/Makefile.am
b/platform/linux-generic/Makefile.am
index 8064193..279e5e2 100644
--- a/platform/linux-generic/Makefile.am
+++ b/platform/linux-generic/Makefile.am
@@ -100,6 +100,7 @@ noinst_HEADERS = \
${srcdir}/include/odp_packet_socket.h \
${srcdir}/include/odp_packet_tap.h \
${srcdir}/include/odp_pool_internal.h \
+ ${srcdir}/include/odp_posix_extensions.h \
${srcdir}/include/odp_queue_internal.h \
${srcdir}/include/odp_schedule_internal.h \
${srcdir}/include/odp_spin_internal.h \
diff --git a/platform/linux-generic/arch/linux/odp_cpu_cycles.c
b/platform/linux-generic/arch/linux/odp_cpu_cycles.c
index 37a4d94..7509bf2 100644
--- a/platform/linux-generic/arch/linux/odp_cpu_cycles.c
+++ b/platform/linux-generic/arch/linux/odp_cpu_cycles.c
@@ -4,7 +4,7 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
-#define _POSIX_C_SOURCE 199309L
+#include <odp_posix_extensions.h>
#include <stdlib.h>
#include <time.h>
diff --git a/platform/linux-generic/include/odp/plat/time_types.h
b/platform/linux-generic/include/odp/plat/time_types.h
index 14c35f0..1b9409b 100644
--- a/platform/linux-generic/include/odp/plat/time_types.h
+++ b/platform/linux-generic/include/odp/plat/time_types.h
@@ -23,7 +23,7 @@ extern "C" {
/**
* @internal Time structure used to isolate linux-generic implementation from
- * the linux timespec structure, which is dependent on _POSIX_C_SOURCE level.
+ * the linux timespec structure, which is dependent on POSIX extension level.
*/
typedef struct odp_time_t {
int64_t tv_sec; /**< @internal Seconds */
diff --git a/platform/linux-generic/include/odp_posix_extensions.h
b/platform/linux-generic/include/odp_posix_extensions.h
new file mode 100644
index 0000000..4b6e335
--- /dev/null
+++ b/platform/linux-generic/include/odp_posix_extensions.h
@@ -0,0 +1,36 @@
+/* Copyright (c) 2016, Linaro Limited
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef ODP_POSIX_EXTENSIONS_H
+#define ODP_POSIX_EXTENSIONS_H
+
+/*
+ * This should be the only file to define POSIX extension levels. When
+ * extensions are needed it should be included first in each C source file.
+ * Header files should not include it.
+ */
+
+/*
+ * Enable POSIX and GNU extensions
+ *
+ * This macro defines:
+ * o _BSD_SOURCE, _SVID_SOURCE, _ATFILE_SOURCE, _LARGEāFILE64_SOURCE,
+ * _ISOC99_SOURCE, _XOPEN_SOURCE_EXTENDED, _POSIX_SOURCE
+ * o _POSIX_C_SOURCE with the value:
+ * * 200809L since glibc v2.10 (== POSIX.1-2008 base specification)
+ * * 200112L before glibc v2.10 (== POSIX.1-2001 base specification)
+ * * 199506L before glibc v2.5
+ * * 199309L before glibc v2.1
+ * o _XOPEN_SOURCE with the value:
+ * * 700 since glibc v2.10
+ * * 600 before glibc v2.10
+ * * 500 before glibc v2.2
+ */
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif
+
+#endif
diff --git a/platform/linux-generic/odp_cpumask.c
b/platform/linux-generic/odp_cpumask.c
index 5cd6a38..c5c1260 100644
--- a/platform/linux-generic/odp_cpumask.c
+++ b/platform/linux-generic/odp_cpumask.c
@@ -4,9 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
+#include <odp_posix_extensions.h>
+
#include <sched.h>
#include <pthread.h>
diff --git a/platform/linux-generic/odp_cpumask_task.c b/platform/linux-generic/odp_cpumask_task.c
index 49dbdb7..41f2bc9 100644
--- a/platform/linux-generic/odp_cpumask_task.c
+++ b/platform/linux-generic/odp_cpumask_task.c
@@ -4,9 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
+#include <odp_posix_extensions.h>
+
#include <sched.h>
#include <pthread.h>
diff --git a/platform/linux-generic/odp_shared_memory.c b/platform/linux-generic/odp_shared_memory.c
index ab48dda..7847cc9 100644
--- a/platform/linux-generic/odp_shared_memory.c
+++ b/platform/linux-generic/odp_shared_memory.c
@@ -4,8 +4,7 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
-/*ftruncate _POSIX_C_SOURCE 200809L */
-#define _POSIX_C_SOURCE 200809L
+#include <odp_posix_extensions.h>
#include <odp/shared_memory.h>
#include <odp_internal.h>
diff --git a/platform/linux-generic/odp_system_info.c
b/platform/linux-generic/odp_system_info.c
index 31df29e..35804a2 100644
--- a/platform/linux-generic/odp_system_info.c
+++ b/platform/linux-generic/odp_system_info.c
@@ -4,7 +4,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
-#define _GNU_SOURCE
+#include <odp_posix_extensions.h>
+
#include <odp/system_info.h>
#include <odp_internal.h>
#include <odp_debug_internal.h>
diff --git a/platform/linux-generic/odp_thread.c
b/platform/linux-generic/odp_thread.c
index 06a5dcd..4ac1c37 100644
--- a/platform/linux-generic/odp_thread.c
+++ b/platform/linux-generic/odp_thread.c
@@ -4,11 +4,9 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
+#include <odp_posix_extensions.h>
+
#include <sched.h>
-
#include <odp/thread.h>
#include <odp/thrmask.h>
#include <odp_internal.h>
diff --git a/platform/linux-generic/odp_thrmask.c
b/platform/linux-generic/odp_thrmask.c
index 154ae81..4545a82 100644
--- a/platform/linux-generic/odp_thrmask.c
+++ b/platform/linux-generic/odp_thrmask.c
@@ -4,10 +4,6 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
-
#include <odp/thrmask.h>
#include <odp/cpumask.h>
diff --git a/platform/linux-generic/odp_time.c b/platform/linux-generic/odp_time.c
index 2cb84f2..b6442ad 100644
--- a/platform/linux-generic/odp_time.c
+++ b/platform/linux-generic/odp_time.c
@@ -4,7 +4,7 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
-#define _POSIX_C_SOURCE 200809L
+#include <odp_posix_extensions.h>
#include <time.h>
#include <odp/time.h>
diff --git a/platform/linux-generic/odp_timer.c
b/platform/linux-generic/odp_timer.c
index 5c1f8ca..3848235 100644
--- a/platform/linux-generic/odp_timer.c
+++ b/platform/linux-generic/odp_timer.c
@@ -21,8 +21,8 @@
#define TB_SET_PAD(x) (void)(x)
#endif
-/* For snprint, POSIX timers and sigevent */
-#define _POSIX_C_SOURCE 200112L
+#include <odp_posix_extensions.h>
+
#include <errno.h>
#include <stdlib.h>
#include <time.h>
diff --git a/platform/linux-generic/pktio/loop.c
b/platform/linux-generic/pktio/loop.c
index 47745ad..d51f0d3 100644
--- a/platform/linux-generic/pktio/loop.c
+++ b/platform/linux-generic/pktio/loop.c
@@ -5,10 +5,6 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
-
#include <odp.h>
#include <odp_packet_internal.h>
#include <odp_packet_io_internal.h>
diff --git a/platform/linux-generic/pktio/netmap.c
b/platform/linux-generic/pktio/netmap.c
index 11ebd55..774e813 100644
--- a/platform/linux-generic/pktio/netmap.c
+++ b/platform/linux-generic/pktio/netmap.c
@@ -6,9 +6,7 @@
#ifdef ODP_NETMAP
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
+#include <odp_posix_extensions.h>
#include <odp_packet_netmap.h>
#include <odp_packet_socket.h>
diff --git a/platform/linux-generic/pktio/pcap.c
b/platform/linux-generic/pktio/pcap.c
index 0817bf5..6511132 100644
--- a/platform/linux-generic/pktio/pcap.c
+++ b/platform/linux-generic/pktio/pcap.c
@@ -34,9 +34,7 @@
* The total length of the string is limited by PKTIO_NAME_LEN.
*/
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
+#include <odp_posix_extensions.h>
#include <odp.h>
#include <odp_packet_internal.h>
diff --git a/platform/linux-generic/pktio/pktio_common.c
b/platform/linux-generic/pktio/pktio_common.c
index 5729db6..be9db33 100644
--- a/platform/linux-generic/pktio/pktio_common.c
+++ b/platform/linux-generic/pktio/pktio_common.c
@@ -5,10 +5,6 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
-
#include <odp_packet_io_internal.h>
#include <odp_classification_internal.h>
diff --git a/platform/linux-generic/pktio/socket.c b/platform/linux-generic/pktio/socket.c
index dfdab18..1417fb4 100644
--- a/platform/linux-generic/pktio/socket.c
+++ b/platform/linux-generic/pktio/socket.c
@@ -5,9 +5,7 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
+#include <odp_posix_extensions.h>
#include <sys/socket.h>
#include <stdio.h>
diff --git a/platform/linux-generic/pktio/socket_mmap.c
b/platform/linux-generic/pktio/socket_mmap.c
index fcaaaf6..1d2eb3c 100644
--- a/platform/linux-generic/pktio/socket_mmap.c
+++ b/platform/linux-generic/pktio/socket_mmap.c
@@ -5,9 +5,8 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
+#include <odp_posix_extensions.h>
+
#include <odp_packet_io_internal.h>
#include <sys/socket.h>
diff --git a/platform/linux-generic/pktio/tap.c
b/platform/linux-generic/pktio/tap.c
index 99e15ce..1eb4f56 100644
--- a/platform/linux-generic/pktio/tap.c
+++ b/platform/linux-generic/pktio/tap.c
@@ -27,9 +27,7 @@
* The total length of the 'iface' is limited by IF_NAMESIZE.
*/
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#endif
+#include <odp_posix_extensions.h>
#include <errno.h>
#include <fcntl.h>