projects
/
userspace-rcu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix rcu_assign_pointer() dynamic linking behavior
[userspace-rcu.git]
/
urcu.c
diff --git
a/urcu.c
b/urcu.c
index e70980f5b93e259f5506e3fb7e1b602708aa63b3..c13ad634e7cb7b98f24d8c9a5a756eb26487bf7b 100644
(file)
--- a/
urcu.c
+++ b/
urcu.c
@@
-216,7
+216,7
@@
void wait_for_quiescent_state(void)
{
LIST_HEAD(qsreaders);
int wait_loops = 0;
{
LIST_HEAD(qsreaders);
int wait_loops = 0;
- struct urcu_reader *index;
+ struct urcu_reader *index
, *tmp
;
if (list_empty(®istry))
return;
if (list_empty(®istry))
return;
@@
-231,7
+231,7
@@
void wait_for_quiescent_state(void)
force_mb_all_threads();
}
force_mb_all_threads();
}
- list_for_each_entry
(index
, ®istry, head) {
+ list_for_each_entry
_safe(index, tmp
, ®istry, head) {
if (!rcu_old_gp_ongoing(&index->ctr))
list_move(&index->head, &qsreaders);
}
if (!rcu_old_gp_ongoing(&index->ctr))
list_move(&index->head, &qsreaders);
}
@@
-278,7
+278,7
@@
void wait_for_quiescent_state(void)
#endif /* #else #ifndef HAS_INCOHERENT_CACHES */
}
/* put back the reader list in the registry */
#endif /* #else #ifndef HAS_INCOHERENT_CACHES */
}
/* put back the reader list in the registry */
- list_
mov
e(&qsreaders, ®istry);
+ list_
splic
e(&qsreaders, ®istry);
}
void synchronize_rcu(void)
}
void synchronize_rcu(void)
@@
-380,7
+380,7
@@
void *rcu_dereference(void *p)
void *rcu_assign_pointer_sym(void **p, void *v)
{
wmb();
void *rcu_assign_pointer_sym(void **p, void *v)
{
wmb();
- return STORE_SHARED(p, v);
+ return STORE_SHARED(
*
p, v);
}
void *rcu_xchg_pointer_sym(void **p, void *v)
}
void *rcu_xchg_pointer_sym(void **p, void *v)
This page took
0.026175 seconds
and
4
git commands to generate.