mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-08-28 19:41:16 +00:00
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: Fabiano Fidêncio <fidencio@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com> Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
This commit is contained in:
parent
8b62008d2b
commit
1a2dbb5595
@ -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 \
|
||||
|
64
src/util/vircgroupbackend.c
Normal file
64
src/util/vircgroupbackend.c
Normal file
@ -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;
|
||||
}
|
46
src/util/vircgroupbackend.h
Normal file
46
src/util/vircgroupbackend.h
Normal file
@ -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__ */
|
Loading…
Reference in New Issue
Block a user