[libvirt] [PATCH 01/47] util: introduce vircgroupbackend files

Fabiano Fidêncio fidencio at redhat.com
Thu Sep 20 06:28:45 UTC 2018


On Tue, Sep 18, 2018 at 5:45 PM, Pavel Hrdina <phrdina at redhat.com> wrote:

> We will need to extract current cgroup v1 implementation into separate
> backend because there will be new cgroup v2 implementation and both will
> have to co-exit.
>

typo: co-exit -> co-exist


>
> Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
>

Reviewed-by: Fabiano Fidêncio <fidencio at redhat.com>


> ---
>  src/Makefile.am             |  1 +
>  src/libvirt_private.syms    |  3 ++
>  src/util/Makefile.inc.am    |  2 ++
>  src/util/vircgroupbackend.c | 64 +++++++++++++++++++++++++++++++++++++
>  src/util/vircgroupbackend.h | 46 ++++++++++++++++++++++++++
>  5 files changed, 116 insertions(+)
>  create mode 100644 src/util/vircgroupbackend.c
>  create mode 100644 src/util/vircgroupbackend.h
>
> diff --git a/src/Makefile.am b/src/Makefile.am
> index 2a3ed0d42d..3465629005 100644
> --- a/src/Makefile.am
> +++ b/src/Makefile.am
> @@ -673,6 +673,7 @@ libvirt_setuid_rpc_client_la_SOURCES = \
>                 util/virbitmap.c \
>                 util/virbuffer.c \
>                 util/vircgroup.c \
> +               util/vircgroupbackend.c \
>                 util/vircommand.c \
>                 util/virconf.c \
>                 util/virdbus.c \
> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index 75c59fbf89..eb302b3559 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -1576,6 +1576,9 @@ virCgroupSetOwner;
>  virCgroupSupportsCpuBW;
>  virCgroupTerminateMachine;
>
> +# util/vircgroupbackend.h
> +virCgroupBackendGetAll;
> +virCgroupBackendRegister;
>
>  # util/virclosecallbacks.h
>  virCloseCallbacksGet;
> diff --git a/src/util/Makefile.inc.am b/src/util/Makefile.inc.am
> index a22265606c..1b236ca62b 100644
> --- a/src/util/Makefile.inc.am
> +++ b/src/util/Makefile.inc.am
> @@ -23,6 +23,8 @@ UTIL_SOURCES = \
>         util/virperf.h \
>         util/vircgroup.c \
>         util/vircgroup.h util/vircgrouppriv.h \
> +       util/vircgroupbackend.c \
> +       util/vircgroupbackend.h \
>         util/virclosecallbacks.c \
>         util/virclosecallbacks.h \
>         util/vircommand.c \
> diff --git a/src/util/vircgroupbackend.c b/src/util/vircgroupbackend.c
> new file mode 100644
> index 0000000000..e014bfc0e6
> --- /dev/null
> +++ b/src/util/vircgroupbackend.c
> @@ -0,0 +1,64 @@
> +/*
> + * vircgroupbackend.c: methods for cgroups backend
> + *
> + * Copyright (C) 2018 Red Hat, Inc.
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library.  If not, see
> + * <http://www.gnu.org/licenses/>.
> + */
> +#include <config.h>
> +
> +#include "vircgroupbackend.h"
> +#include "virerror.h"
> +#include "virthread.h"
> +
> +#define VIR_FROM_THIS VIR_FROM_CGROUP
> +
> +VIR_ENUM_DECL(virCgroupBackend);
> +VIR_ENUM_IMPL(virCgroupBackend, VIR_CGROUP_BACKEND_TYPE_LAST,
> +              "cgroup V1");
> +
> +static virOnceControl virCgroupBackendOnce = VIR_ONCE_CONTROL_INITIALIZER;
> +static virCgroupBackendPtr virCgroupBackends[VIR_CGROUP_BACKEND_TYPE_LAST]
> = { 0 };
> +
> +void
> +virCgroupBackendRegister(virCgroupBackendPtr backend)
> +{
> +    if (virCgroupBackends[backend->type]) {
> +        virReportError(VIR_ERR_INTERNAL_ERROR,
> +                       _("Cgroup backend '%s' already registered."),
> +                       virCgroupBackendTypeToString(backend->type));
> +        return;
> +    }
> +
> +    virCgroupBackends[backend->type] = backend;
> +}
> +
> +
> +static void
> +virCgroupBackendOnceInit(void)
> +{
> +}
> +
> +
> +virCgroupBackendPtr *
> +virCgroupBackendGetAll(void)
> +{
> +    if (virOnce(&virCgroupBackendOnce, virCgroupBackendOnceInit) < 0) {
> +        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> +                       _("Failed to initialize cgroup backend."));
> +        return NULL;
> +    }
> +    return virCgroupBackends;
> +}
> diff --git a/src/util/vircgroupbackend.h b/src/util/vircgroupbackend.h
> new file mode 100644
> index 0000000000..db052485a8
> --- /dev/null
> +++ b/src/util/vircgroupbackend.h
> @@ -0,0 +1,46 @@
> +/*
> + * vircgroupbackend.h: methods for cgroups backend
> + *
> + * Copyright (C) 2018 Red Hat, Inc.
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2.1 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library.  If not, see
> + * <http://www.gnu.org/licenses/>.
> + */
> +
> +#ifndef __VIR_CGROUP_BACKEND_H__
> +# define __VIR_CGROUP_BACKEND_H__
> +
> +# include "internal.h"
> +
> +# include "vircgroup.h"
> +
> +
> +typedef enum {
> +    VIR_CGROUP_BACKEND_TYPE_V1 = 0,
> +    VIR_CGROUP_BACKEND_TYPE_LAST,
> +} virCgroupBackendType;
> +
> +struct _virCgroupBackend {
> +    virCgroupBackendType type;
> +};
> +typedef struct _virCgroupBackend virCgroupBackend;
> +typedef virCgroupBackend *virCgroupBackendPtr;
> +
> +void
> +virCgroupBackendRegister(virCgroupBackendPtr backend);
> +
> +virCgroupBackendPtr *
> +virCgroupBackendGetAll(void);
> +
> +#endif /* __VIR_CGROUP_BACKEND_H__ */
> --
> 2.17.1
>
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20180920/123cca1b/attachment-0001.htm>


More information about the libvir-list mailing list