- Introduce VIR_CGROUP_SUPPORTED conditional - Convert virCgroupKill* to use it - Convert virCgroupIsolateMount() to use it --- src/util/vircgroup.c | 59 ++++++++++++++++++++++++++++------------------------ 1 file changed, 32 insertions(+), 27 deletions(-) diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c index cfb4b3f..5f656b1 100644 --- a/src/util/vircgroup.c +++ b/src/util/vircgroup.c @@ -56,6 +56,11 @@ #define VIR_FROM_THIS VIR_FROM_CGROUP +#if defined(__linux__) && defined(HAVE_GETMNTENT_R) \ + && defined(_DIRENT_HAVE_D_TYPE) +# define VIR_CGROUP_SUPPORTED +#endif + VIR_ENUM_IMPL(virCgroupController, VIR_CGROUP_CONTROLLER_LAST, "cpu", "cpuacct", "cpuset", "memory", "devices", "freezer", "blkio", "net_cls", "perf_event", @@ -2682,7 +2687,7 @@ int virCgroupGetFreezerState(virCgroupPtr group, char **state) } -#if defined HAVE_KILL && defined HAVE_MNTENT_H && defined HAVE_GETMNTENT_R +#ifdef VIR_CGROUP_SUPPORTED /* * Returns 1 if some PIDs are killed, 0 if none are killed, or -1 on error */ @@ -2866,6 +2871,7 @@ cleanup: return ret; } + int virCgroupKillRecursive(virCgroupPtr group, int signum) { int ret; @@ -2911,31 +2917,7 @@ int virCgroupKillPainfully(virCgroupPtr group) return ret; } -#else /* !(HAVE_KILL, HAVE_MNTENT_H, HAVE_GETMNTENT_R) */ -int virCgroupKill(virCgroupPtr group ATTRIBUTE_UNUSED, - int signum ATTRIBUTE_UNUSED) -{ - virReportSystemError(ENOSYS, "%s", - _("Control groups not supported on this platform")); - return -1; -} -int virCgroupKillRecursive(virCgroupPtr group ATTRIBUTE_UNUSED, - int signum ATTRIBUTE_UNUSED) -{ - virReportSystemError(ENOSYS, "%s", - _("Control groups not supported on this platform")); - return -1; -} -int virCgroupKillPainfully(virCgroupPtr group ATTRIBUTE_UNUSED) -{ - virReportSystemError(ENOSYS, "%s", - _("Control groups not supported on this platform")); - return -1; -} -#endif /* HAVE_KILL, HAVE_MNTENT_H, HAVE_GETMNTENT_R */ - -#ifdef __linux__ static char *virCgroupIdentifyRoot(virCgroupPtr group) { char *ret = NULL; @@ -3048,7 +3030,30 @@ cleanup: VIR_FREE(opts); return ret; } -#else /* __linux__ */ +#else /* VIR_CGROUP_SUPPORTED */ +int virCgroupKill(virCgroupPtr group ATTRIBUTE_UNUSED, + int signum ATTRIBUTE_UNUSED) +{ + virReportSystemError(ENOSYS, "%s", + _("Control groups not supported on this platform")); + return -1; +} + +int virCgroupKillRecursive(virCgroupPtr group ATTRIBUTE_UNUSED, + int signum ATTRIBUTE_UNUSED) +{ + virReportSystemError(ENOSYS, "%s", + _("Control groups not supported on this platform")); + return -1; +} + +int virCgroupKillPainfully(virCgroupPtr group ATTRIBUTE_UNUSED) +{ + virReportSystemError(ENOSYS, "%s", + _("Control groups not supported on this platform")); + return -1; +} + int virCgroupIsolateMount(virCgroupPtr group ATTRIBUTE_UNUSED, const char *oldroot ATTRIBUTE_UNUSED, const char *mountopts ATTRIBUTE_UNUSED) @@ -3057,4 +3062,4 @@ int virCgroupIsolateMount(virCgroupPtr group ATTRIBUTE_UNUSED, _("Control groups not supported on this platform")); return -1; } -#endif /* __linux__ */ +#endif /* VIR_CGROUP_SUPPORTED */ -- 1.8.2.3 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list