Commit 1c87bc60 authored by Jon Chronopoulos's avatar Jon Chronopoulos Committed by Brad King

ProcessorCount: Fix virtual processor count on Solaris

The previous code did not count the number of virtual processors across
physical processors on SunOS.

Can handle the following situations:

```
$ uname -a
SunOS solaris 5.11 11.4.0.15.0 i86pc i386 i86pc
$ psrinfo -p -v
The physical processor has 1 virtual processor (0)
  x86 (GenuineIntel 306D2 family 6 model 61 step 2 clock 3492 MHz)
        Intel Core Processor (Broadwell)
The physical processor has 1 virtual processor (1)
  x86 (GenuineIntel 306D2 family 6 model 61 step 2 clock 3492 MHz)
        Intel Core Processor (Broadwell)
The physical processor has 1 virtual processor (2)
  x86 (GenuineIntel 306D2 family 6 model 61 step 2 clock 3492 MHz)
        Intel Core Processor (Broadwell)
The physical processor has 1 virtual processor (3)
  x86 (GenuineIntel 306D2 family 6 model 61 step 2 clock 3492 MHz)
        Intel Core Processor (Broadwell)
```

```
$ uname -a
SunOS sol11x86 5.11 11.0 i86pc i386 i86pc
$ psrinfo -p -v
The physical processor has 2 virtual processors (0 1)
  x86 (GenuineIntel 50650 family 6 model 85 step 0 clock 2000 MHz)
        Intel(r) Xeon(r) Gold 6138 CPU @ 2.00GHz
```

```
$ uname -a
SunOS sol11 5.11 11.0 sun4v sparc sun4v
$ psrinfo -p -v
The physical processor has 2 cores and 16 virtual processors (0-15)
  The core has 8 virtual processors (0-7)
  The core has 8 virtual processors (8-15)
    SPARC-T4 (chipid 0, clock 2848 MHz)
```
parent 2a5d077a
......@@ -168,9 +168,13 @@ function(ProcessorCount var)
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE
OUTPUT_VARIABLE psrinfo_output)
string(REGEX MATCH "([0-9]+) virtual processor" procs "${psrinfo_output}")
set(count "${CMAKE_MATCH_1}")
#message("ProcessorCount: trying psrinfo -p -v '${ProcessorCount_cmd_prvinfo}'")
string(REGEX MATCHALL "has [0-9]+ virtual processor" procs "${psrinfo_output}")
set(count "")
foreach(proc ${procs})
string(REGEX MATCH "has ([0-9]+) virtual" res ${proc})
math(EXPR count "${count} + ${CMAKE_MATCH_1}")
endforeach()
#message("ProcessorCount: trying '${ProcessorCount_cmd_psrinfo}' -p -v")
else()
# Sun (systems where uname -X emits "NumCPU" in its output):
find_program(ProcessorCount_cmd_uname uname)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment