#include <unistd.h> // sysconf
#include "globals.h"
+#if defined(_ARM_) || defined(_ARM64_)
+#define SYSCONF_GET_NUMPROCS _SC_NPROCESSORS_CONF
+#else
+#define SYSCONF_GET_NUMPROCS _SC_NPROCESSORS_ONLN
+#endif
+
// The cachced number of logical CPUs observed.
static uint32_t g_logicalCpuCount = 0;
g_pageSizeUnixInl = uint32_t((pageSize > 0) ? pageSize : 0x1000);
// Calculate and cache the number of processors on this machine
- int cpuCount = sysconf(_SC_NPROCESSORS_ONLN);
+ int cpuCount = sysconf(SYSCONF_GET_NUMPROCS);
if (cpuCount == -1)
{
return false;
int nrcpus = 0;
#if HAVE_SYSCONF
- nrcpus = sysconf(_SC_NPROCESSORS_ONLN);
+
+#if defined(_ARM_) || defined(_ARM64_)
+#define SYSCONF_GET_NUMPROCS _SC_NPROCESSORS_CONF
+#define SYSCONF_GET_NUMPROCS_NAME "_SC_NPROCESSORS_CONF"
+#else
+#define SYSCONF_GET_NUMPROCS _SC_NPROCESSORS_ONLN
+#define SYSCONF_GET_NUMPROCS_NAME "_SC_NPROCESSORS_ONLN"
+#endif
+ nrcpus = sysconf(SYSCONF_GET_NUMPROCS);
if (nrcpus < 1)
{
- ASSERT("sysconf failed for _SC_NPROCESSORS_ONLN (%d)\n", errno);
+ ASSERT("sysconf failed for %s (%d)\n", SYSCONF_GET_NUMPROCS_NAME, errno);
}
#elif HAVE_SYSCTL
int rc;