提交 0615c843 编写于 作者: P Pavel Hrdina

vircgroupv1: fix build on non-linux OSes

Cgroups are linux specific and we need to make sure that the code is
compiled only on linux.  On different OSes it fails the compilation:

../../src/util/vircgroupv1.c:65:19: error: variable has incomplete type 'struct mntent'
    struct mntent entry;
                  ^
../../src/util/vircgroupv1.c:65:12: note: forward declaration of 'struct mntent'
    struct mntent entry;
           ^
../../src/util/vircgroupv1.c:74:12: error: implicit declaration of function 'getmntent_r' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
    while (getmntent_r(mounts, &entry, buf, sizeof(buf)) != NULL) {
           ^
../../src/util/vircgroupv1.c:814:39: error: use of undeclared identifier 'MS_NOSUID'
    if (mount("tmpfs", root, "tmpfs", MS_NOSUID|MS_NODEV|MS_NOEXEC, opts) < 0) {
                                      ^
../../src/util/vircgroupv1.c:814:49: error: use of undeclared identifier 'MS_NODEV'
    if (mount("tmpfs", root, "tmpfs", MS_NOSUID|MS_NODEV|MS_NOEXEC, opts) < 0) {
                                                ^
../../src/util/vircgroupv1.c:814:58: error: use of undeclared identifier 'MS_NOEXEC'
    if (mount("tmpfs", root, "tmpfs", MS_NOSUID|MS_NODEV|MS_NOEXEC, opts) < 0) {
                                                         ^
../../src/util/vircgroupv1.c:841:65: error: use of undeclared identifier 'MS_BIND'
            if (mount(src, group->legacy[i].mountPoint, "none", MS_BIND,
                                                                ^
Reviewed-by: NJán Tomko <jtomko@redhat.com>
Signed-off-by: NPavel Hrdina <phrdina@redhat.com>
上级 6ef37ed3
...@@ -20,13 +20,11 @@ ...@@ -20,13 +20,11 @@
*/ */
#include <config.h> #include <config.h>
#if defined HAVE_MNTENT_H && defined HAVE_GETMNTENT_R #ifdef __linux__
# include <mntent.h> # include <mntent.h>
#endif # include <sys/stat.h>
#include <sys/stat.h>
#if defined HAVE_SYS_MOUNT_H
# include <sys/mount.h> # include <sys/mount.h>
#endif #endif /* __linux__ */
#include "internal.h" #include "internal.h"
...@@ -55,6 +53,8 @@ VIR_ENUM_IMPL(virCgroupV1Controller, VIR_CGROUP_CONTROLLER_LAST, ...@@ -55,6 +53,8 @@ VIR_ENUM_IMPL(virCgroupV1Controller, VIR_CGROUP_CONTROLLER_LAST,
"name=systemd"); "name=systemd");
#ifdef __linux__
/* We're looking for at least one 'cgroup' fs mount, /* We're looking for at least one 'cgroup' fs mount,
* which is *not* a named mount. */ * which is *not* a named mount. */
static bool static bool
...@@ -2099,3 +2099,13 @@ virCgroupV1Register(void) ...@@ -2099,3 +2099,13 @@ virCgroupV1Register(void)
{ {
virCgroupBackendRegister(&virCgroupV1Backend); virCgroupBackendRegister(&virCgroupV1Backend);
} }
#else /* !__linux__ */
void
virCgroupV1Register(void)
{
VIR_INFO("Control groups not supported on this platform");
}
#endif /* !__linux__ */
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册