On Wed, 09 Sep 2009 12:31:46 -0400 Lee Schermerhorn <lee.schermerhorn@xxxxxx> wrote: > [PATCH 3/6] - hugetlb: introduce alloc_nodemask_of_node() > > Against: 2.6.31-rc7-mmotm-090827-1651 > > New in V5 of series > > V6: + rename 'init_nodemask_of_nodes()' to 'init_nodemask_of_node()' > + redefine init_nodemask_of_node() as static inline fcn > + move this patch back 1 in series > > Introduce nodemask macro to allocate a nodemask and > initialize it to contain a single node, using the macro > init_nodemask_of_node() factored out of the nodemask_of_node() > macro. > > alloc_nodemask_of_node() coded as a macro to avoid header > dependency hell. > > This will be used to construct the huge pages "nodes_allowed" > nodemask for a single node when basing nodes_allowed on a > preferred/local mempolicy or when a persistent huge page > pool page count is modified via a per node sysfs attribute. > > ... > > +/* > + * returns pointer to kmalloc()'d nodemask initialized to contain the > + * specified node. Caller must free with kfree(). > + */ > +#define alloc_nodemask_of_node(node) \ > +({ \ > + typeof(_unused_nodemask_arg_) *nmp; \ > + nmp = kmalloc(sizeof(*nmp), GFP_KERNEL); \ > + if (nmp) \ > + init_nodemask_of_node(nmp, (node)); \ > + nmp; \ > +}) All right, I give up. What's with this `typeof(_unused_nodemask_arg_)' stuff? Was there a reason why this had to be implemented as a macro? One which evaluates its arg either one or zero times, btw? hm. "to avoid header dependency hell". What hell? Self-inflicted? alloc_nodemask_of_node() has no callers, so I can think of a good fix for these problems. If it _did_ have a caller then I might ask "can't we fix this by moving alloc_nodemask_of_node() into the .c file". But it doesn't so I can't. It's a bit rude to assume that the caller wanted to use GFP_KERNEL. -- To unsubscribe from this list: send the line "unsubscribe linux-numa" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html