This is an update to the earlier frlock. Changes: - name change frlock to seqlock - separate the locking and counter only data types - use one counter instead of two to keep track of changes. For barriers, keep to the same basic original strategy. One change is to use mb() (instead of wmb()) for the counter only, since it is possible to for some future use to make mistakes there. Despite all the discussion, there has been no good argument that original x86_64 code was incorrect in the way it used wmb and rmb. Left for future work: * move do_gettimeofday to common code, rather than across N arch and have a do_gettimeoffset for the tick offset. * replace vxtime_lock on x86_64 since same data now in xtime_lock * move data that is used for time stuff together, right now xtime, xtime_lock, jiffies, wall_jiffies are all spread over memory and in different cache lines. Compiles and runs on i386, will do ia64 soon. Others, I edited based on Andrew's last code.