lkml.org 
[lkml]   [2009]   [Aug]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [patch 2/4 -mm] flex_array: add flex_array_clear function
From
Date
On Fri, 2009-08-21 at 16:21 -0700, David Rientjes wrote:
> /**
> + * flex_array_clear - clear element in array at @element_nr
> + * @element_nr: index of the position to clear.
> + *
> + * Locking must be provided by the caller.
> + */
> +int flex_array_clear(struct flex_array *fa, unsigned int element_nr)
> +{
> + int part_nr = fa_element_to_part_nr(fa, element_nr);
> + struct flex_array_part *part;
> + void *dst;
> +
> + if (element_nr >= fa->total_nr_elements)
> + return -ENOSPC;
> + if (elements_fit_in_base(fa))
> + part = (struct flex_array_part *)&fa->parts[0];
> + else {
> + part = fa->parts[part_nr];
> + if (!part)
> + return -EINVAL;
> + }
> + dst = &part->elements[index_inside_part(fa, element_nr)];
> + memset(dst, 0, fa->element_size);
> + return 0;
> +}

My only worry about this is that it's largely a copy-and-paste of
flex_array_put(). If we had a function that just returned a pointer to
'dst', we could use that in both cases.

Couldn't we implement the above with just:

int flex_array_clear(struct flex_array *fa, unsigned int element_nr)
{
return flex_array_put(fa, element_nr, &empty_zero_page);
}

-- Dave



\
 
 \ /
  Last update: 2009-08-24 17:45    [W:0.973 / U:0.196 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site