1#!/usr/bin/env python3
2# SPDX-License-Identifier: GPL-2.0-only
3
4import raw_pylibcpupower as p
5
6# Simple function call
7
8"""
9Get cstate count
10"""
11cpu_cstates_count = p.cpuidle_state_count(0)
12if cpu_cstates_count > -1:
13    print(f"CPU 0 has {cpu_cstates_count} c-states")
14else:
15    print(f"cstate count error: return code: {cpu_cstates_count}")
16
17"""
18Disable cstate (will fail if the above is 0, ex: a virtual machine)
19"""
20cstate_disabled = p.cpuidle_state_disable(0, 0, 1)
21if cpu_cstates_count == 0:
22    print(f"CPU 0 has {cpu_cstates_count} c-states")
23else:
24    print(f"cstate count error: return code: {cpu_cstates_count}")
25
26match 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
37topo = p.cpupower_topology()
38total_cpus = p.get_cpu_topology(topo)
39if total_cpus > 0:
40    print(f"Number of total cpus: {total_cpus} and number of cores: {topo.cores}")
41else:
42    print(f"Error: could not get cpu topology")
43