lkml.org 
[lkml]   [2022]   [Nov]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH 22/26] cgroup/misc: Add private per cgroup data to struct misc_cg
Date
The SGX driver needs to be able to store additional per cgroup data
specific to SGX along with the misc_cg struct. Add the ability to get
and set this data in struct misc_cg.

Signed-off-by: Kristen Carlson Accardi <kristen@linux.intel.com>
---
include/linux/misc_cgroup.h | 12 ++++++++++++
kernel/cgroup/misc.c | 39 +++++++++++++++++++++++++++++++++++++
2 files changed, 51 insertions(+)

diff --git a/include/linux/misc_cgroup.h b/include/linux/misc_cgroup.h
index c00deae4d2df..7fbf3efb0f62 100644
--- a/include/linux/misc_cgroup.h
+++ b/include/linux/misc_cgroup.h
@@ -43,6 +43,7 @@ struct misc_res {
unsigned long max;
atomic_long_t usage;
atomic_long_t events;
+ void *priv;
};

/**
@@ -63,6 +64,8 @@ struct misc_cg *root_misc(void);
struct misc_cg *parent_misc(struct misc_cg *cg);
unsigned long misc_cg_read(enum misc_res_type type, struct misc_cg *cg);
unsigned long misc_cg_max(enum misc_res_type type, struct misc_cg *cg);
+void *misc_cg_get_priv(enum misc_res_type type, struct misc_cg *cg);
+void misc_cg_set_priv(enum misc_res_type type, struct misc_cg *cg, void *priv);
unsigned long misc_cg_res_total_usage(enum misc_res_type type);
int misc_cg_set_capacity(enum misc_res_type type, unsigned long capacity);
int misc_cg_try_charge(enum misc_res_type type, struct misc_cg *cg,
@@ -130,6 +133,15 @@ static inline unsigned long misc_cg_max(enum misc_res_type type, struct misc_cg
return 0;
}

+static void *misc_cg_get_priv(enum misc_res_type type, struct misc_cg *cg)
+{
+ return NULL;
+}
+
+static void misc_cg_set_priv(enum misc_res_type type, struct misc_cg *cg, void *priv)
+{
+}
+
static inline unsigned long misc_cg_res_total_usage(enum misc_res_type type)
{
return 0;
diff --git a/kernel/cgroup/misc.c b/kernel/cgroup/misc.c
index 18d0bec7d609..642879ad136f 100644
--- a/kernel/cgroup/misc.c
+++ b/kernel/cgroup/misc.c
@@ -251,6 +251,45 @@ unsigned long misc_cg_max(enum misc_res_type type, struct misc_cg *cg)
}
EXPORT_SYMBOL_GPL(misc_cg_max);

+/**
+ * misc_cg_get_priv() - Return the priv value of the misc cgroup res.
+ * @type: Type of the misc res.
+ * @cg: Misc cgroup whose priv will be read
+ *
+ * Context: Any context.
+ * Return:
+ * The value of the priv field for the specified misc cgroup.
+ * If an invalid misc_res_type is given, NULL will be returned.
+ */
+void *misc_cg_get_priv(enum misc_res_type type, struct misc_cg *cg)
+{
+ if (!(valid_type(type) && cg))
+ return NULL;
+
+ return cg->res[type].priv;
+}
+EXPORT_SYMBOL_GPL(misc_cg_get_priv);
+
+/**
+ * misc_cg_set_priv() - Set the priv value of the misc cgroup res.
+ * @type: Type of the misc res.
+ * @cg: Misc cgroup whose priv will be written
+ * @priv: Value to store in the priv field of the struct misc_cg
+ *
+ * If an invalid misc_res_type is given, the priv data will not be
+ * stored.
+ *
+ * Context: Any context.
+ */
+void misc_cg_set_priv(enum misc_res_type type, struct misc_cg *cg, void *priv)
+{
+ if (!(valid_type(type) && cg))
+ return;
+
+ cg->res[type].priv = priv;
+}
+EXPORT_SYMBOL_GPL(misc_cg_set_priv);
+
/**
* misc_cg_max_show() - Show the misc cgroup max limit.
* @sf: Interface file
--
2.37.3
\
 
 \ /
  Last update: 2022-11-11 19:39    [W:0.163 / U:0.892 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site