projects
/
urcu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
qsbr: micro optimization of the gp use.
[urcu.git]
/
urcu-qsbr.c
diff --git
a/urcu-qsbr.c
b/urcu-qsbr.c
index 3f21be3160731979b6f39455b1202ccf00849237..1955277ac65d309e8b187f82b2eec242a7d211f2 100644
(file)
--- a/
urcu-qsbr.c
+++ b/
urcu-qsbr.c
@@
-42,7
+42,7
@@
pthread_mutex_t urcu_mutex = PTHREAD_MUTEX_INITIALIZER;
/*
* Global grace period counter.
*/
/*
* Global grace period counter.
*/
-long urcu_gp_ctr =
0
;
+long urcu_gp_ctr =
1
;
/*
* Written to only by each individual reader. Read by both the reader and the
/*
* Written to only by each individual reader. Read by both the reader and the
@@
-139,9
+139,9
@@
static void wait_for_quiescent_state(void)
void synchronize_rcu(void)
{
void synchronize_rcu(void)
{
-
int
was_online;
+
long
was_online;
- was_online = rcu_reader_qs_gp
& 1
;
+ was_online = rcu_reader_qs_gp;
/*
* Mark the writer thread offline to make sure we don't wait for
/*
* Mark the writer thread offline to make sure we don't wait for
@@
-158,7
+158,7
@@
void synchronize_rcu(void)
internal_urcu_unlock();
if (was_online)
internal_urcu_unlock();
if (was_online)
- _STORE_SHARED(rcu_reader_qs_gp, LOAD_SHARED(urcu_gp_ctr)
+ 1
);
+ _STORE_SHARED(rcu_reader_qs_gp, LOAD_SHARED(urcu_gp_ctr));
smp_mb();
}
smp_mb();
}
This page took
0.025958 seconds
and
4
git commands to generate.