libCom/osi: use epicsThreadGetCPUs implementation from thread-pool branch (posix, WIN32)

This commit is contained in:
Ralph Lange
2014-05-18 17:24:38 +02:00
parent 286bfc5215
commit 722d5eeba7
3 changed files with 22 additions and 3 deletions

View File

@@ -1110,7 +1110,11 @@ epicsShareFunc void * epicsShareAPI epicsThreadPrivateGet ( epicsThreadPrivateId
*/
epicsShareFunc int epicsThreadGetCPUs ( void )
{
return atoi(getenv("NUMBER_OF_PROCESSORS"));
SYSTEM_INFO sysinfo;
GetSystemInfo(&sysinfo);
if (sysinfo.dwNumberOfProcessors > 0)
return sysinfo.dwNumberOfProcessors;
return 1;
}
#ifdef TEST_CODES

View File

@@ -875,5 +875,16 @@ epicsShareFunc double epicsShareAPI epicsThreadSleepQuantum ()
epicsShareFunc int epicsThreadGetCPUs(void)
{
return sysconf(_SC_NPROCESSORS_ONLN);
long ret;
#ifdef _SC_NPROCESSORS_ONLN
ret = sysconf(_SC_NPROCESSORS_ONLN);
if (ret > 0)
return ret;
#endif
#ifdef _SC_NPROCESSORS_CONF
ret = sysconf(_SC_NPROCESSORS_CONF);
if (ret > 0)
return ret;
#endif
return 1;
}

View File

@@ -81,7 +81,11 @@ static void thread(void *arg)
MAIN(epicsThreadTest)
{
testPlan(8);
testPlan(9);
unsigned int ncpus = epicsThreadGetCPUs();
testDiag("System has %u CPUs", ncpus);
testOk1(ncpus > 0);
const int ntasks = 3;
myThread *myThreads[ntasks];