Karim Yaghmour writes: > > Christoph Hellwig wrote: > > the lockless mode is really just loops around cmpxchg. It's spinlocks > > reinvented poorly.
Christoph, Sadly they're not the same, atomic operations provide a set of functionality that simple spin locks do not give you. Consider two different processes each executing the following code int global_val; modify_val_spin() { acquire_spin_lock() // calculate some_value based on global_val // for example c=global_val; if (c%0) some_value=10; else some_value=20; global_val = global_val + some_value release_spin_lock() } modify_val_atomic() { do // calculate some_value based on global_val // for example c=global_val; if (c%0) some_value=10; else some_value=20; global_val = global_val + some_value while (compare_and_store(global_val, , )) } What's the difference. The deal is if two processes execute this code simultaneously and one gets interrupted in the middle of modify_val_spin, then the other wastes its entire quantum spinning for the lock. In the modify_val_atomic if one process gets interrupted, no problem, the other process can proceed through, then when the first one runs again the CAS will fail, and it will go around the loop again. Now imagine it was the kernel involved... I don't claim to have all the answers and am happy to have discussion on something, but the attitude expressed by "It's spinlocks reinvented poorly." is not conducive to a useful exchange even if you were correct. > > I beg to differ. You have to use different spinlocks depending on > where you are: > - serving user-space > - bh-derivatives > - irq > > lockless is the same primitive regardless of your current state, > it's not the same as spinlocks. > > Karim > -- > Author, Speaker, Developer, Consultant > Pushing Embedded and Real-Time Linux Systems Beyond the Limits > http://www.opersys.com || [EMAIL PROTECTED] || 1-866-677-4546 Robert Wisniewski The K42 MP OS Project http://www.research.ibm.com/K42/ [EMAIL PROTECTED] - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/