tools: use sysfs interface to balloon driver if present

The pvops dom0 kernel does not expose the balloon driver via
/proc/xen, so use the sysfs interface.

Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
This commit is contained in:
Keir Fraser committed 2008-11-17 15:54:31 +00:00
1 parent b332f34777
commit 336c683373
1 file changed
+27 -2
+27 -2
View File
@@ -38,7 +38,10 @@ _vif_script = {
"SunOS": "vif-vnic"
}
def _linux_balloon_stat(label):
PROC_XEN_BALLOON = '/proc/xen/balloon'
SYSFS_XEN_MEMORY = '/sys/devices/system/xen_memory/xen_memory0'
def _linux_balloon_stat_proc(label):
"""Returns the value for the named label, or None if an error occurs."""
xend2linux_labels = { 'current' : 'Current allocation',
@@ -47,7 +50,6 @@ def _linux_balloon_stat(label):
'high-balloon' : 'High-mem balloon',
'limit' : 'Xen hard limit' }
PROC_XEN_BALLOON = '/proc/xen/balloon'
f = file(PROC_XEN_BALLOON, 'r')
try:
for line in f:
@@ -62,6 +64,29 @@ def _linux_balloon_stat(label):
finally:
f.close()
def _linux_balloon_stat_sysfs(label):
sysfiles = { 'target' : 'target_kb',
'current' : 'info/current_kb',
'low-balloon' : 'info/low_kb',
'high-balloon' : 'info/high_kb',
'limit' : 'info/hard_limit_kb' }
name = os.path.join(SYSFS_XEN_MEMORY, sysfiles[label])
f = file(name, 'r')
val = f.read().strip()
if val.isdigit():
return int(val)
return None
def _linux_balloon_stat(label):
if os.access(PROC_XEN_BALLOON, os.F_OK):
return _linux_balloon_stat_proc(label)
elif os.access(SYSFS_XEN_MEMORY, os.F_OK):
return _linux_balloon_stat_sysfs(label)
return None
def _solaris_balloon_stat(label):
"""Returns the value for the named label, or None if an error occurs."""
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.