From: Stanislav Kholmanskikh <stanislav.kholmansk...@oracle.com>

Signed-off-by: Stanislav Kholmanskikh <stanislav.kholmansk...@oracle.com>
Signed-off-by: Jan Stancek <jstan...@redhat.com>
---
 .../cpu_hotplug/include/cpuhotplug_hotplug.sh      | 73 +++++++++++++++++++++-
 1 file changed, 70 insertions(+), 3 deletions(-)

diff --git a/testcases/kernel/hotplug/cpu_hotplug/include/cpuhotplug_hotplug.sh 
b/testcases/kernel/hotplug/cpu_hotplug/include/cpuhotplug_hotplug.sh
index f553d0c..6920393 100644
--- a/testcases/kernel/hotplug/cpu_hotplug/include/cpuhotplug_hotplug.sh
+++ b/testcases/kernel/hotplug/cpu_hotplug/include/cpuhotplug_hotplug.sh
@@ -126,11 +126,78 @@ get_cpus_num()
 #
 get_all_cpus()
 {
-    [ -d /sys/devices/system/cpu/cpu0 ] || return 1
-    ls -dr /sys/devices/system/cpu/cpu[0-9]* | \
-        sed "s/\/sys\/devices\/system\/cpu\///g" || return 2
+    [ -d /sys/devices/system/cpu ] || return 1
+    (cd /sys/devices/system/cpu; ls -d cpu[0-9]*)
 }
 
+# get_present_cpus()
+#
+#  Prints a list of present CPUs, regardless of whether they're
+#  currently online or offline.
+#
+get_present_cpus()
+{
+    local present_mask="/sys/devices/system/cpu/present"
+    local present_cpus=""
+
+    # if sysfs present mask is missing, assume all cpu are present
+    if [ ! -e "$present_mask" ]; then
+        get_all_cpus
+        return
+    fi
+
+    for part in $(cat $present_mask | tr "," " "); do
+        if echo $part | grep -q "-"; then
+            range_low=$(echo $part | cut -d - -f 1)
+            range_high=$(echo $part | cut -d - -f 2)
+        else
+            range_low=$(part)
+            range_high=$(part)
+        fi
+        for cpu in $(seq $range_low $range_high); do
+            if [ -e /sys/devices/system/cpu/cpu$cpu ]; then
+                present_cpus="$present_cpus cpu$cpu"
+            fi
+        done
+    done
+    echo $present_cpus
+}
+
+# get_present_cpus_num()
+#
+#  Prints the number of present CPUs
+#
+get_present_cpus_num()
+{
+    return $(get_present_cpus | wc -w)
+}
+
+# get_hotplug_cpus()
+#
+#  Prints a list of present hotpluggable CPUs, regardless of whether they're
+#  currently online or offline.
+#
+get_hotplug_cpus()
+{
+    local present_cpus=$(get_present_cpus)
+    local hotplug_cpus=""
+
+    for cpu in $present_cpus; do
+        if [ -e /sys/devices/system/cpu/$cpu/online ]; then
+            hotplug_cpus="$hotplug_cpus $cpu"
+       fi
+    done
+    echo $hotplug_cpus
+}
+
+# get_hotplug_cpus_num()
+#
+#  Prints the number of hotpluggable CPUs
+#
+get_hotplug_cpus_num()
+{
+    return $(get_hotplug_cpus | wc -w)
+}
 
 # get_all_cpu_states()
 #
-- 
1.8.3.1


------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to