summary |
shortlog | log |
commit |
commitdiff |
tree
first ⋅ prev ⋅ next
Paul E. McKenney [Sun, 8 Feb 2009 00:00:55 +0000 (19:00 -0500)]
Do two parity flip in the writer to fix race condition
On Sat, Feb 07, 2009 at 07:10:28AM -0800, Paul E. McKenney wrote:
> So, how to fix? Here are some approaches:
>
> o Make urcu_publish_content() do two parity flips rather than one.
> I use this approach in my rcu_rcpg, rcu_rcpl, and rcu_rcpls
> algorithms in CodeSamples/defer.
>
> o Use a single free-running counter, in a manner similar to rcu_nest,
> as suggested earlier. This one is interesting, as I rely on a
> read-side memory barrier to handle the long-preemption case.
> However, if you believe that any thread that waits several minutes
> between executing adjacent instructions must have been preempted
> (which the memory barriers that are required to do a context
> switch), then a compiler barrier suffices. ;-)
>
> Of course, the probability of seeing this failure during test is quite
> low, since it is unlikely that thread 0 would run just long enough to
> execute its signal handler. However, it could happen. And if you were
> to adapt this algorithm for use in a real-time application, then priority
> boosting could cause this to happen naturally.
And here is a patch, taking the first approach. It also exposes a
synchronize_rcu() API that is used by the existing urcu_publish_content()
API. This allows easier handling of structures that are referenced by
more than one pointer. And should also allow to be more easily plugged
into my rcutorture test. ;-)
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Bert Wesarg [Sat, 7 Feb 2009 23:59:29 +0000 (18:59 -0500)]
test_urcu.c: use gettid()
It's probably better to print the tid for each thread, not the pid.
Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
Bert Wesarg [Fri, 6 Feb 2009 11:45:42 +0000 (06:45 -0500)]
URCU : use pthread_equal()
But you should use pthread_equal() for you equality test of pthread_t.
Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 6 Feb 2009 11:13:49 +0000 (06:13 -0500)]
Run longer tests
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 6 Feb 2009 03:25:51 +0000 (22:25 -0500)]
update Makefile, -Wall
Mathieu Desnoyers [Fri, 6 Feb 2009 02:47:01 +0000 (21:47 -0500)]
remove ugly gcc warning removal ack, simply cast the caller parameter
Mathieu Desnoyers [Fri, 6 Feb 2009 02:41:04 +0000 (21:41 -0500)]
add acknowledgements, fix gcc warnings
Mathieu Desnoyers [Fri, 6 Feb 2009 02:14:20 +0000 (21:14 -0500)]
fix wait_for_quiescent_state
Mathieu Desnoyers [Fri, 6 Feb 2009 01:49:36 +0000 (20:49 -0500)]
add licensing
Mathieu Desnoyers [Fri, 6 Feb 2009 01:46:14 +0000 (20:46 -0500)]
modify test values
Mathieu Desnoyers [Fri, 6 Feb 2009 01:04:29 +0000 (20:04 -0500)]
runs
Mathieu Desnoyers [Fri, 6 Feb 2009 01:04:03 +0000 (20:04 -0500)]
runs
Mathieu Desnoyers [Fri, 6 Feb 2009 00:42:15 +0000 (19:42 -0500)]
add make clean
Mathieu Desnoyers [Fri, 6 Feb 2009 00:41:34 +0000 (19:41 -0500)]
runs
Mathieu Desnoyers [Fri, 6 Feb 2009 00:16:25 +0000 (19:16 -0500)]
compile
Mathieu Desnoyers [Fri, 6 Feb 2009 00:06:44 +0000 (19:06 -0500)]
init version
This page took 0.055635 seconds and 4 git commands to generate.