aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/adaint.c
diff options
context:
space:
mode:
authorJerome Lambourg <lambourg@adacore.com>2018-05-22 13:26:49 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2018-05-22 13:26:49 +0000
commit9820b3897803c38f66f8515dc15cdb3e10c7ad20 (patch)
tree5200ed8a157dd822e2fb3d68b2ae0a75efe2ef6f /gcc/ada/adaint.c
parent817659c5f32786062f09befbf7132723441556b6 (diff)
downloadgcc-9820b3897803c38f66f8515dc15cdb3e10c7ad20.zip
gcc-9820b3897803c38f66f8515dc15cdb3e10c7ad20.tar.gz
gcc-9820b3897803c38f66f8515dc15cdb3e10c7ad20.tar.bz2
[Ada] Fix retrieval of number of CPUs on QNX
Although the sysconf SC_NPROCESSORS_ONLN is also defined by the API, the only documented way to retrieve the number of CPUs is by using the syspage. This also better organise the QNX-specific macros in adaint.c 2018-05-22 Jerome Lambourg <lambourg@adacore.com> gcc/ada/ * adaint.c: Reorganize QNX-specific macros, use syspage to retreive the number of CPUs. From-SVN: r260531
Diffstat (limited to 'gcc/ada/adaint.c')
-rw-r--r--gcc/ada/adaint.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/gcc/ada/adaint.c b/gcc/ada/adaint.c
index 3b0aea9..9e0919e 100644
--- a/gcc/ada/adaint.c
+++ b/gcc/ada/adaint.c
@@ -39,7 +39,9 @@
#define _THREAD_SAFE
/* Use 64 bit Large File API */
-#ifndef _LARGEFILE_SOURCE
+#if defined (__QNX__)
+#define _LARGEFILE64_SOURCE 1
+#elif !defined(_LARGEFILE_SOURCE)
#define _LARGEFILE_SOURCE
#endif
#define _FILE_OFFSET_BITS 64
@@ -81,8 +83,8 @@
#define __BSD_VISIBLE 1
#endif
-#if defined (__QNX__)
-#define _LARGEFILE64_SOURCE 1
+#ifdef __QNX__
+#include <sys/syspage.h>
#endif
#ifdef IN_RTS
@@ -2350,9 +2352,12 @@ __gnat_number_of_cpus (void)
#if defined (__linux__) || defined (__sun__) || defined (_AIX) \
|| defined (__APPLE__) || defined (__FreeBSD__) || defined (__OpenBSD__) \
- || defined (__DragonFly__) || defined (__NetBSD__) || defined (__QNX__)
+ || defined (__DragonFly__) || defined (__NetBSD__)
cores = (int) sysconf (_SC_NPROCESSORS_ONLN);
+#elif defined (__QNX__)
+ cores = (int) _syspage_ptr->num_cpu;
+
#elif defined (__hpux__)
struct pst_dynamic psd;
if (pstat_getdynamic (&psd, sizeof (psd), 1, 0) != -1)