Skip to content

Commit 6604752

Browse files
John B. Wyatt IVshuahkh
authored andcommitted
pm:cpupower: Include test_raw_pylibcpupower.py
This script demonstrates how to make use of, and tests, the bindings. In the future, this script could become part of a larger test suite to test the bindings and libcpupower. Signed-off-by: John B. Wyatt IV <jwyatt@redhat.com> Signed-off-by: John B. Wyatt IV <sageofredondo@gmail.com> Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
1 parent 338f490 commit 6604752

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#!/usr/bin/env python3
2+
# SPDX-License-Identifier: GPL-2.0-only
3+
4+
import raw_pylibcpupower as p
5+
6+
# Simple function call
7+
8+
"""
9+
Get cstate count
10+
"""
11+
cpu_cstates_count = p.cpuidle_state_count(0)
12+
if cpu_cstates_count > -1:
13+
print(f"CPU 0 has {cpu_cstates_count} c-states")
14+
else:
15+
print(f"cstate count error: return code: {cpu_cstates_count}")
16+
17+
"""
18+
Disable cstate (will fail if the above is 0, ex: a virtual machine)
19+
"""
20+
cstate_disabled = p.cpuidle_state_disable(0, 0, 1)
21+
if cpu_cstates_count == 0:
22+
print(f"CPU 0 has {cpu_cstates_count} c-states")
23+
else:
24+
print(f"cstate count error: return code: {cpu_cstates_count}")
25+
26+
match cstate_disabled:
27+
case 0:
28+
print(f"CPU state disabled")
29+
case -1:
30+
print(f"Idlestate not available")
31+
case _:
32+
print(f"Not documented")
33+
34+
35+
# Pointer example
36+
37+
topo = p.cpupower_topology()
38+
total_cpus = p.get_cpu_topology(topo)
39+
if total_cpus > 0:
40+
print(f"Number of total cpus: {total_cpus} and number of cores: {topo.cores}")
41+
else:
42+
print(f"Error: could not get cpu topology")

0 commit comments

Comments
 (0)