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

Andrew Morton
2014-06-17T21:17:16Z

On Wed, 11 Jun 2014 14:15:11 -0500 Christoph Lameter <cl@linux.com> wrote:

> 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.
>
> ...
>
> --- 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)

Clueless newbs would be aided if this comment were to describe the
iterator's locking requirements.