[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 0/5] use mask operations instead of test_bit()
On 10/02/2015 11:03 AM, Dario Faggioli wrote: On Fri, 2015-10-02 at 06:40 +0200, Juergen Gross wrote:Instead of using test_bit() which is an atomic operation and limits the compiler's choices to do optimization, use logical ANDs with bitmasks where possible.That's a good idea, I think. It's a fallout from a cleanup patch: http://lists.xen.org/archives/html/xen-devel/2015-09/msg03184.html The possible candidates have been detected by searching definitions of bitmasks in the form: #define MASK 1 << _MASKRight.On x86 the resulting code is slightly smaller (about 2 bytes for each case, checked via disassembly in few examples). I'm quite sure I didn't replace a test_bit() call required to be atomic, but I'd be grateful for a thorough review especially in the scheduler.I'll have a deep look. Thanks. One question, can we introduce a __test_bit() macro/inline function, like Jan did with __set_bit? In the thread mentioned above you'll find a discussion about exactly this idea between Jan and me. I've quickly-&-dirtily tested this: #define __test_bit(nr, addr) ({ \ unsigned _flags = 1 << nr; \ addr & _flags; \ }) and the result (I've checked a couple of cases) seems the same to me. The problem is the limited scope where this scheme is really working and is a better solution at the same time (nr must be a constant less than the numbers of bits of *addr). Juergen _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |