Re: [PATCH 3/6] hugetlb: introduce alloc_nodemask_of_node

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux Kernel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]     [Devices]

  Powered by Linux