lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 27 Nov 2008 10:38:08 +0100 From: "stephane eranian" <eranian@...glemail.com> To: "Thomas Gleixner" <tglx@...utronix.de> Cc: "Andi Kleen" <andi@...stfloor.org>, linux-kernel@...r.kernel.org, akpm@...ux-foundation.org, mingo@...e.hu, x86@...nel.org, sfr@...b.auug.org.au Subject: Re: [patch 05/24] perfmon: X86 generic code (x86) Thomas, On Thu, Nov 27, 2008 at 12:16 AM, Thomas Gleixner <tglx@...utronix.de> wrote: > On Wed, 26 Nov 2008, stephane eranian wrote: >> > What a nonsense. We have a bitmask already. Why not iterate over the >> > bitmask and be done ? >> > >> >> Bitmask can be sparsed. Num represents the number of bits we have to find. >> The idea is that we don't need to scan the entire bitmask, we stop as soon as >> we have found all the bits we care about (i.e., all the bits that are set). >> >> Example: >> num = 3 >> bitmask=0000000010001001 >> ^ we will iterate until we are >> done with that bit. > > Errm. > > #define for_each_bit(bit, addr, size) \ > for ((bit) = find_first_bit((addr), (size)); \ > (bit) < (size); \ > (bit) = find_next_bit((addr), (size), (bit) + 1)) > > find_first_bit() and find_next_bit() are single instructions on most > architectures. "size" is known upfront at setup time of the > context/set and can be cached. > > This takes exactly 3 iterations, while your method needs 8. And it > gets worse with the following example: > > Example: > num = 1 > bitmask=1000 0000 0000 0000 0000 0000 0000 00000 > > ^ you will iterate until we are done with that bit (32 times) > > for_each_bit() will iterate exactly _once_. > Ok, you've convinced me. I will make the change. Thanks. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists