提交 1a2dbb55 编写于 作者: P Pavel Hrdina

util: introduce vircgroupbackend files

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-exist.
Reviewed-by: NFabiano Fidêncio <fidencio@redhat.com>
Reviewed-by: NJán Tomko <jtomko@redhat.com>
Signed-off-by: NPavel Hrdina <phrdina@redhat.com>
上级 8b62008d
......@@ -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 \
......
......@@ -1576,6 +1576,9 @@ virCgroupSetOwner;
virCgroupSupportsCpuBW;
virCgroupTerminateMachine;
# util/vircgroupbackend.h
virCgroupBackendGetAll;
virCgroupBackendRegister;
# util/virclosecallbacks.h
virCloseCallbacksGet;
......
......@@ -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 \
......
/*
* 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;
}
/*
* 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__ */
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册