Add a table for cgroup v1 to v2 conversions -
cgroup_v1_to_v2_map[]
Add a table for cgroup v2 to v2 conversions -
cgroup_v2_to_v1_map[]
Signed-off-by: Tom Hromatka <[email protected]>
---
src/Makefile.am | 2 +-
src/abstraction-map.c | 42 ++++++++++++++++++++++++++++++++++
src/abstraction-map.h | 52 +++++++++++++++++++++++++++++++++++++++++++
3 files changed, 95 insertions(+), 1 deletion(-)
create mode 100644 src/abstraction-map.c
create mode 100644 src/abstraction-map.h
diff --git a/src/Makefile.am b/src/Makefile.am
index f1e671b5da59..47c2ec6dc3e1 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -15,7 +15,7 @@ CLEANFILES = lex.c parse.c parse.h
AM_CPPFLAGS = -I$(top_srcdir)/include
lib_LTLIBRARIES = libcgroup.la libcgroupfortesting.la
-libcgroup_la_SOURCES = parse.h parse.y lex.l api.c config.c
libcgroup-internal.h libcgroup.map wrapper.c log.c abstraction-common.c
abstraction-common.h
+libcgroup_la_SOURCES = parse.h parse.y lex.l api.c config.c
libcgroup-internal.h libcgroup.map wrapper.c log.c abstraction-common.c
abstraction-common.h abstraction-map.c abstraction-map.h
libcgroup_la_LIBADD = -lpthread $(CODE_COVERAGE_LIBS)
libcgroup_la_CFLAGS = $(CODE_COVERAGE_CFLAGS) -DSTATIC=static
libcgroup_la_LDFLAGS = -Wl,--version-script,$(srcdir)/libcgroup.map \
diff --git a/src/abstraction-map.c b/src/abstraction-map.c
new file mode 100644
index 000000000000..91fdec0e8818
--- /dev/null
+++ b/src/abstraction-map.c
@@ -0,0 +1,42 @@
+/**
+ * Libcgroup abstraction layer mappings
+ *
+ * Copyright (c) 2021 Oracle and/or its affiliates.
+ * Author: Tom Hromatka <[email protected]>
+ */
+
+/*
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of version 2.1 of the GNU Lesser General Public License as
+ * published by the Free Software Foundation.
+ *
+ * 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 <libcgroup.h>
+#include <libcgroup-internal.h>
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "abstraction-common.h"
+#include "abstraction-map.h"
+
+const struct cgroup_abstraction_map cgroup_v1_to_v2_map[] = {
+};
+const int cgroup_v1_to_v2_map_sz = sizeof(cgroup_v1_to_v2_map) /
+ sizeof(cgroup_v1_to_v2_map[0]);
+
+const struct cgroup_abstraction_map cgroup_v2_to_v1_map[] = {
+};
+const int cgroup_v2_to_v1_map_sz = sizeof(cgroup_v2_to_v1_map) /
+ sizeof(cgroup_v2_to_v1_map[0]);
diff --git a/src/abstraction-map.h b/src/abstraction-map.h
new file mode 100644
index 000000000000..538a66d59b01
--- /dev/null
+++ b/src/abstraction-map.h
@@ -0,0 +1,52 @@
+/**
+ * Libcgroup abstraction layer mappings
+ *
+ * Copyright (c) 2021 Oracle and/or its affiliates.
+ * Author: Tom Hromatka <[email protected]>
+ */
+
+/*
+ * This library is free software; you can redistribute it and/or modify it
+ * under the terms of version 2.1 of the GNU Lesser General Public License as
+ * published by the Free Software Foundation.
+ *
+ * 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 __ABSTRACTION_MAP
+#define __ABSTRACTION_MAP
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct cgroup_abstraction_map {
+ /* if the conversion isn't a one-to-one mapping or the mathematical
+ * conversion is unique, create a custom conversion function.
+ */
+ int (*cgroup_convert)(struct cgroup_controller * const dst_cgc,
+ const char * const in_value,
+ const char * const out_setting,
+ void *in_dflt, void *out_dflt);
+ char *in_setting;
+ void *in_dflt;
+ char *out_setting;
+ void *out_dflt;
+};
+
+extern const struct cgroup_abstraction_map cgroup_v1_to_v2_map[];
+extern const int cgroup_v1_to_v2_map_sz;
+
+extern const struct cgroup_abstraction_map cgroup_v2_to_v1_map[];
+extern const int cgroup_v2_to_v1_map_sz;
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* __ABSTRACTION_MAP */
--
2.25.1
_______________________________________________
Libcg-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libcg-devel