|
@@ -233,6 +233,21 @@ enum res_type {
|
|
|
/* Used for OOM nofiier */
|
|
|
#define OOM_CONTROL (0)
|
|
|
|
|
|
+/*
|
|
|
+ * Iteration constructs for visiting all cgroups (under a tree). If
|
|
|
+ * loops are exited prematurely (break), mem_cgroup_iter_break() must
|
|
|
+ * be used for reference counting.
|
|
|
+ */
|
|
|
+#define for_each_mem_cgroup_tree(iter, root) \
|
|
|
+ for (iter = mem_cgroup_iter(root, NULL, NULL); \
|
|
|
+ iter != NULL; \
|
|
|
+ iter = mem_cgroup_iter(root, iter, NULL))
|
|
|
+
|
|
|
+#define for_each_mem_cgroup(iter) \
|
|
|
+ for (iter = mem_cgroup_iter(NULL, NULL, NULL); \
|
|
|
+ iter != NULL; \
|
|
|
+ iter = mem_cgroup_iter(NULL, iter, NULL))
|
|
|
+
|
|
|
/* Some nice accessors for the vmpressure. */
|
|
|
struct vmpressure *memcg_to_vmpressure(struct mem_cgroup *memcg)
|
|
|
{
|
|
@@ -913,21 +928,6 @@ static void invalidate_reclaim_iterators(struct mem_cgroup *dead_memcg)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
- * Iteration constructs for visiting all cgroups (under a tree). If
|
|
|
- * loops are exited prematurely (break), mem_cgroup_iter_break() must
|
|
|
- * be used for reference counting.
|
|
|
- */
|
|
|
-#define for_each_mem_cgroup_tree(iter, root) \
|
|
|
- for (iter = mem_cgroup_iter(root, NULL, NULL); \
|
|
|
- iter != NULL; \
|
|
|
- iter = mem_cgroup_iter(root, iter, NULL))
|
|
|
-
|
|
|
-#define for_each_mem_cgroup(iter) \
|
|
|
- for (iter = mem_cgroup_iter(NULL, NULL, NULL); \
|
|
|
- iter != NULL; \
|
|
|
- iter = mem_cgroup_iter(NULL, iter, NULL))
|
|
|
-
|
|
|
/**
|
|
|
* mem_cgroup_scan_tasks - iterate over tasks of a memory cgroup hierarchy
|
|
|
* @memcg: hierarchy root
|