Messages in this thread | | | Date | Wed, 7 Dec 2005 10:07:15 -0500 (EST) | From | Alan Stern <> | Subject | Re: [linux-usb-devel] Re: [PATCH 00/10] usb-serial: Switches from spin lock to atomic_t. |
| |
On Tue, 6 Dec 2005, Oliver Neukum wrote:
> Am Dienstag, 6. Dezember 2005 21:13 schrieb Eduardo Pereira Habkost: > > Anyway, I don't see yet why the atomic_t would make the code slower on > > non-smp. Is atomic_add_unless(v, 1, 1) supposed to be slower than > > 'if (!v) v = 1;' ? > > spin_lock() can be dropped on UP. atomic_XXX must either use an operation > on main memory, meaning less efficient code generation, or must disable > interrupts even on UP.
atomic_add_unless is sort of a special case. It doesn't have a clean simple implementation, unlike most of the other atomic_t operations. If an equivalent result could be obtained using, e.g., atomic_inc_and_test, that would be a better approach.
On the other hand, Oliver needs to be careful about claiming too much. In general atomic_t operations _are_ superior to the spinlock approach. If they weren't, atomic_t wouldn't belong in the kernel at all.
Alan Stern
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |