diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2009-03-31 11:19:26 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2009-03-31 11:19:26 +0100 |
commit | fd598342a0befbbe36a446934e8d291b751b1175 (patch) | |
tree | 3318f05d5af338df952e5858f173fa6d09169a20 /tools/libxc/xc_pm.c | |
parent | 6fe255bdc2edb6a26326f6532908ffebbf69336a (diff) | |
download | xen-fd598342a0befbbe36a446934e8d291b751b1175.tar.gz xen-fd598342a0befbbe36a446934e8d291b751b1175.tar.bz2 xen-fd598342a0befbbe36a446934e8d291b751b1175.zip |
cpuidle: export max_cstate access via libxc
Signed-off-by: Wei Gang <gang.wei@intel.com>
Diffstat (limited to 'tools/libxc/xc_pm.c')
-rw-r--r-- | tools/libxc/xc_pm.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/tools/libxc/xc_pm.c b/tools/libxc/xc_pm.c index 13342a3121..652f1729ef 100644 --- a/tools/libxc/xc_pm.c +++ b/tools/libxc/xc_pm.c @@ -362,3 +362,36 @@ int xc_set_sched_opt_smt(int xc_handle, uint32_t value) return rc; } +int xc_get_cpuidle_max_cstate(int xc_handle, uint32_t *value) +{ + int rc; + DECLARE_SYSCTL; + + if ( xc_handle < 0 || !value ) + return -EINVAL; + + sysctl.cmd = XEN_SYSCTL_pm_op; + sysctl.u.pm_op.cmd = XEN_SYSCTL_pm_op_get_max_cstate; + sysctl.u.pm_op.cpuid = 0; + sysctl.u.pm_op.get_max_cstate = 0; + rc = do_sysctl(xc_handle, &sysctl); + *value = sysctl.u.pm_op.get_max_cstate; + + return rc; +} + +int xc_set_cpuidle_max_cstate(int xc_handle, uint32_t value) +{ + DECLARE_SYSCTL; + + if ( xc_handle < 0 ) + return -EINVAL; + + sysctl.cmd = XEN_SYSCTL_pm_op; + sysctl.u.pm_op.cmd = XEN_SYSCTL_pm_op_set_max_cstate; + sysctl.u.pm_op.cpuid = 0; + sysctl.u.pm_op.set_max_cstate = value; + + return do_sysctl(xc_handle, &sysctl); +} + |