[PATCH 1/3] slab common: Add functions for kmem_cache_node access

Christoph Lameter
2014-06-11T19:15:24Z

[-- Attachment #1: common_node_functions --]
[-- Type: text/plain, Size: 1919 bytes --]

These functions allow to eliminate repeatedly used code in both
SLAB and SLUB and also allow for the insertion of debugging code
that may be needed in the development process.

Signed-off-by: Christoph Lameter <cl@linux.com>

Index: linux/mm/slab.h
===================================================================
--- linux.orig/mm/slab.h 2014-06-10 14:18:11.506956436 -0500
+++ linux/mm/slab.h 2014-06-10 14:21:51.279893231 -0500
@@ -294,5 +294,18 @@ struct kmem_cache_node {

};

+static inline struct kmem_cache_node *get_node(struct kmem_cache *s, int node)
+{
+ return s->node[node];
+}
+
+/*
+ * Iterator over all nodes. The body will be executed for each node that has
+ * a kmem_cache_node structure allocated (which is true for all online nodes)
+ */
+#define for_each_kmem_cache_node(__s, __node, __n) \
+ for (__node = 0; __n = get_node(__s, __node), __node < nr_node_ids; __node++) \
+ if (__n)
+
void *slab_next(struct seq_file *m, void *p, loff_t *pos);
void slab_stop(struct seq_file *m, void *p);
Index: linux/mm/slub.c
===================================================================
--- linux.orig/mm/slub.c 2014-06-10 14:18:11.506956436 -0500
+++ linux/mm/slub.c 2014-06-10 14:19:58.000000000 -0500
@@ -233,11 +233,6 @@ static inline void stat(const struct kme
* Core slab cache functions
*******************************************************************/

-static inline struct kmem_cache_node *get_node(struct kmem_cache *s, int node)
-{
- return s->node[node];
-}
-
/* Verify that a pointer has an address that is valid within a slab page */
static inline int check_valid_pointer(struct kmem_cache *s,
struct page *page, const void *object)