On Tue, Oct 18, 2022 at 9:25 AM David Laight <David.Laight@xxxxxxxxxx> wrote: > > From: Frank Hofmann > > Sent: 18 October 2022 09:13 > > > > On Tue, Oct 18, 2022 at 6:02 AM Ivan Babrou <ivan@xxxxxxxxxxxxxx> wrote: > > > > > > On Mon, Oct 17, 2022 at 6:47 PM Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote: > > > > > + > > > > > + fdt = files_fdtable(p->files); > > > > > + size = fdt->max_fds; > > > > > + > > > > > + for (i = size / BITS_PER_LONG; i > 0;) > > > > > + open_fds += hweight64(fdt->open_fds[--i]); > > > > > > > > Could BITMAP_WEIGHT() or __bitmap_weight() or bitmap_weight() be used here? > > > > > > That's a great suggestion. I tested it with bitmap_weight() and it > > > looks much cleaner while providing the same result. > > > > > > I just sent the v3 with this suggestion applied. > > > > +1 from me on using bitmap_weight() - good spotting that. > > Does that have the optimisations for the value being 0, ~0u > or 2**n-1 all of which are likely for the fd table. > (Especially if there is no 'popcnt' instruction.) > > David bitmap_weight() uses hweight_*() under the hood, which then falls through to platform-specific popcnt where available. Re, lib/bitmap.c and arch/.../asm/bitops.h or arch/.../hweight.S, for the impl details. FrankH. > > - > Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK > Registration No: 1397386 (Wales)