Messages in this thread | | | Date | Wed, 03 Nov 2010 10:16:57 -0700 | From | David Daney <> | Subject | Re: [PATCH 7/9] Add yaffs tag access code |
| |
On 11/03/2010 09:53 AM, cdhmanning@gmail.com wrote: [...] > --- /dev/null > +++ b/fs/yaffs2/yaffs_tagscompat.c > @@ -0,0 +1,454 @@ > +/* > + * YAFFS: Yet Another Flash File System. A NAND-flash specific file system. > + * > + * Copyright (C) 2002-2010 Aleph One Ltd. > + * for Toby Churchill Ltd and Brightstar Engineering > + * > + * Created by Charles Manning<charles@aleph1.co.uk> > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License version 2 as > + * published by the Free Software Foundation. > + */ > + > +#include "yaffs_guts.h" > +#include "yaffs_tagscompat.h" > +#include "yaffs_ecc.h" > +#include "yaffs_getblockinfo.h" > +#include "yaffs_trace.h" > + > +static void yaffs_handle_rd_data_error(struct yaffs_dev *dev, int nand_chunk); > + > +static const char yaffs_count_bits_table[256] = { > + 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, > + 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, > + 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, > + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, > + 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, > + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, > + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, > + 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, > + 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, > + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, > + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, > + 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, > + 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, > + 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, > + 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, > + 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8 > +}; > + > +int yaffs_count_bits(u8 x) > +{ > + int ret_val; > + ret_val = yaffs_count_bits_table[x]; > + return ret_val; > +}
As in the other file, the kernel has hweight8() that should probably be used instead.
On some architectures hweight8() expands to a single instruction. Others should already have something as efficient as this, and if they don't they probably should.
David Daney
| |