mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
lxc: suspend/resume support
* src/conf/domain_conf.c: Don't assume all virDomainObjPtr have a non-NULL monitor_chr field in virDomainObjFormat. * src/lxc/lxc_driver.c: Implement suspend/resume driver APis * src/util/cgroup.c, src/util/cgroup.h: Support the 'freezer' cgroup controller * src/libvirt_private.syms: Export virCgroupSetFreezerState and virCgroupGetFreezerState
This commit is contained in:
committed by
Daniel P. Berrange
parent
0c85095e46
commit
c8c9ef2757
@@ -32,7 +32,8 @@
|
||||
#define CGROUP_MAX_VAL 512
|
||||
|
||||
VIR_ENUM_IMPL(virCgroupController, VIR_CGROUP_CONTROLLER_LAST,
|
||||
"cpu", "cpuacct", "cpuset", "memory", "devices");
|
||||
"cpu", "cpuacct", "cpuset", "memory", "devices",
|
||||
"freezer");
|
||||
|
||||
struct virCgroupController {
|
||||
int type;
|
||||
@@ -896,3 +897,23 @@ int virCgroupGetCpuacctUsage(virCgroupPtr group, unsigned long long *usage)
|
||||
VIR_CGROUP_CONTROLLER_CPUACCT,
|
||||
"cpuacct.usage", (uint64_t *)usage);
|
||||
}
|
||||
|
||||
int virCgroupSetFreezerState(virCgroupPtr group, const char *state)
|
||||
{
|
||||
return virCgroupSetValueStr(group,
|
||||
VIR_CGROUP_CONTROLLER_CPU,
|
||||
"freezer.state", state);
|
||||
}
|
||||
|
||||
int virCgroupGetFreezerState(virCgroupPtr group, char **state)
|
||||
{
|
||||
int ret;
|
||||
ret = virCgroupGetValueStr(group,
|
||||
VIR_CGROUP_CONTROLLER_CPU,
|
||||
"freezer.state", state);
|
||||
if (ret == 0) {
|
||||
char *p = strchr(*state, '\n');
|
||||
if (p) *p = '\0';
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ enum {
|
||||
VIR_CGROUP_CONTROLLER_CPUSET,
|
||||
VIR_CGROUP_CONTROLLER_MEMORY,
|
||||
VIR_CGROUP_CONTROLLER_DEVICES,
|
||||
VIR_CGROUP_CONTROLLER_FREEZER,
|
||||
|
||||
VIR_CGROUP_CONTROLLER_LAST
|
||||
};
|
||||
@@ -68,6 +69,9 @@ int virCgroupGetCpuShares(virCgroupPtr group, unsigned long long *shares);
|
||||
|
||||
int virCgroupGetCpuacctUsage(virCgroupPtr group, unsigned long long *usage);
|
||||
|
||||
int virCgroupSetFreezerState(virCgroupPtr group, const char *state);
|
||||
int virCgroupGetFreezerState(virCgroupPtr group, char **state);
|
||||
|
||||
int virCgroupRemove(virCgroupPtr group);
|
||||
|
||||
void virCgroupFree(virCgroupPtr *group);
|
||||
|
||||
Reference in New Issue
Block a user