From: Johannes Berg <johannes@xxxxxxxxxxxxxxxx> Date: Wed, 18 Jan 2023 19:03:24 +0100 > On Wed, 2023-01-18 at 17:49 +0100, Alexander Lobakin wrote: >> >> Aaaah right. Seems like we can't avoid introducing a separate macro for >> that. I like the idea of your patch anyways! > > :) > >> One note re __BF_CHECK_POW2(): can't we reuse is_power_of_2() anyhow? >> Foe example, by deriving the code of the latter into a macro and then >> using it in both? >> > > Well, not directly - for example is_power_of_2() doesn't accept 0, while > we want to accept 0 (mask being e.g. "0xfull<<60", we already check for > mask != 0). > > I thought about __BUILD_BUG_ON_NOT_POWER_OF_2 but it uses BUILD_BUG_ON, > not BUILD_BUG_ON_ZERO, and BUILD_BUG_ON is nicer in most contexts ... > > So you could pull out the expression "((n) & ((n) - 1)) != 0" from all > four of these, but it doesn't feel worth it. Aaaah I see. __BUILD_BUG_ON_NOT_POWER_OF_2_ZERO() then? :D (mostly joking and not sure it's worth it, up to you) > > johannes Thanks, Olek