On Thu, Nov 29, 2007 at 06:36:50AM -0800, Paul E. McKenney wrote: > > That certainly is an interesting tradeoff... Save a memory barrier > when assigning NULL, but pay an extra test and branch in all cases. > Though it does make for a simpler rule -- just use rcu_assign_pointer() > in all cases. Of course, if almost all rcu_assign_pointer() executions > assign non-NULL pointers, the optimal strategy would be to leave the > implementation of rcu_assign_pointer() alone, and simply enforce use > of rcu_assign_pointer(), even if the pointer being assigned is NULL. I was thinking of something much simpler. If the second argument is constant and NULL, then skip the barrier. No run-time slow-down at all. > Although rcu_dereference() does a memory barrier only on Alpha, that of > rcu_assign_pointer() is needed on any machine that does not preserve store > order (Itanium, POWER, ARM, some MIPS boxes according to rumor, ...). Good point! Thanks, -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmV>HI~} <herbert@xxxxxxxxxxxxxxxxxxx> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt _______________________________________________ Bridge mailing list Bridge@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/bridge