From mboxrd@z Thu Jan 1 00:00:00 1970 From: Arnd Bergmann Subject: Re: [PATCH 1/5] bitops: add generic implementation of ext2 atomic bitops by test_and_{set,clear}_bit Date: Sun, 10 Oct 2010 18:36:52 +0200 Message-ID: <201010101836.52406.arnd@arndb.de> References: <1286532193-29814-1-git-send-email-akinobu.mita@gmail.com> <20101008102433.GA24208@infradead.org> Mime-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Return-path: Received: from moutng.kundenserver.de ([212.227.17.9]:55175 "EHLO moutng.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751211Ab0JJQhs (ORCPT ); Sun, 10 Oct 2010 12:37:48 -0400 In-Reply-To: Sender: linux-arch-owner@vger.kernel.org List-ID: To: Akinobu Mita Cc: Christoph Hellwig , linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org, Andrew Morton On Sunday 10 October 2010 17:07:26 Akinobu Mita wrote: > Some architectures use spinlock to implement it > (asm-generic/bitops/ext2-atomic.h). Most other architectures use > test_and_set_bit() and test_and_clear_bit() as this patch shows. > > Why are there two implementations? test_and_{set,clear}_bit() are more > costly operations than spinlock for some architectures? I would guess that is only true on architectures that implement all atomics using a hashed spinlock like cris, sparc32 or parisc. This way the user can decide which spinlock to use rather than have the arch code calculate a hash on the pointer. This is an ext2 specific micro-optimization that I don't think makes sense in the generic le bitops code. Arnd