diff options
author | Simon Cornish <[email protected]> | 2013-09-02 23:31:52 -0700 |
---|---|---|
committer | Simon Cornish <[email protected]> | 2013-09-02 23:31:52 -0700 |
commit | efbd406f1b8f148569a40a090c38929a7661d2aa (patch) | |
tree | c889ff72011133f71f56a56c981988c74250f7ae | |
parent | 8be8c20d33d67acb205a51897ea5284bc81605e7 (diff) | |
download | otp-efbd406f1b8f148569a40a090c38929a7661d2aa.tar.gz otp-efbd406f1b8f148569a40a090c38929a7661d2aa.tar.bz2 otp-efbd406f1b8f148569a40a090c38929a7661d2aa.zip |
Fix broken cpu_sup:nprocs and others on Solaris 64-bit
The correct kstat datatype for nproc & avenrun_* is ui32, not
ulong. Under 64-bit OTP builds garbage was returned because the wrong
datatype was used.
This patch correcs the datatype. It also adds an additional check
in the test case for a slightly less insane return value.
-rw-r--r-- | lib/os_mon/c_src/cpu_sup.c | 4 | ||||
-rw-r--r-- | lib/os_mon/test/cpu_sup_SUITE.erl | 1 |
2 files changed, 3 insertions, 2 deletions
diff --git a/lib/os_mon/c_src/cpu_sup.c b/lib/os_mon/c_src/cpu_sup.c index 22946eca0e..e9fd75a32c 100644 --- a/lib/os_mon/c_src/cpu_sup.c +++ b/lib/os_mon/c_src/cpu_sup.c @@ -293,10 +293,10 @@ static unsigned int misc_measure(char* name) { if(!entry) return -1; - if(entry->data_type != KSTAT_DATA_ULONG) + if(entry->data_type != KSTAT_DATA_UINT32) return -1; - return entry->value.ul; + return entry->value.ui32; } diff --git a/lib/os_mon/test/cpu_sup_SUITE.erl b/lib/os_mon/test/cpu_sup_SUITE.erl index d04adbb6d3..e0382cb0c7 100644 --- a/lib/os_mon/test/cpu_sup_SUITE.erl +++ b/lib/os_mon/test/cpu_sup_SUITE.erl @@ -88,6 +88,7 @@ load_api(Config) when is_list(Config) -> ?line N = cpu_sup:nprocs(), ?line true = is_integer(N), ?line true = N>0, + ?line true = N<1000000, %% avg1() ?line Load1 = cpu_sup:avg1(), |