projects
/
userspace-rcu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Rename all memory primitives with prefix cmm_
[userspace-rcu.git]
/
urcu-defer.c
diff --git
a/urcu-defer.c
b/urcu-defer.c
index 92635ed3cca4c1f45390bfac5348714722f56547..6dc08a383f0f310ee0d71358242ed3a1bf081a20 100644
(file)
--- a/
urcu-defer.c
+++ b/
urcu-defer.c
@@
-3,7
+3,7
@@
*
* Userspace RCU library - batch memory reclamation
*
*
* Userspace RCU library - batch memory reclamation
*
- * Copyright (c) 2009 Mathieu Desnoyers <mathieu.desnoyers@
polymtl.ca
>
+ * Copyright (c) 2009 Mathieu Desnoyers <mathieu.desnoyers@
efficios.com
>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@
-123,13
+123,13
@@
static unsigned long rcu_defer_num_callbacks(void)
static void wait_defer(void)
{
uatomic_dec(&defer_thread_futex);
static void wait_defer(void)
{
uatomic_dec(&defer_thread_futex);
-
smp_mb();
/* Write futex before read queue */
+
cmm_smp_mb();
/* Write futex before read queue */
if (rcu_defer_num_callbacks()) {
if (rcu_defer_num_callbacks()) {
-
smp_mb();
/* Read queue before write futex */
+
cmm_smp_mb();
/* Read queue before write futex */
/* Callbacks are queued, don't wait. */
uatomic_set(&defer_thread_futex, 0);
} else {
/* Callbacks are queued, don't wait. */
uatomic_set(&defer_thread_futex, 0);
} else {
-
smp_rmb();
/* Read queue before read futex */
+
cmm_smp_rmb();
/* Read queue before read futex */
if (uatomic_read(&defer_thread_futex) == -1)
futex_noasync(&defer_thread_futex, FUTEX_WAIT, -1,
NULL, NULL, 0);
if (uatomic_read(&defer_thread_futex) == -1)
futex_noasync(&defer_thread_futex, FUTEX_WAIT, -1,
NULL, NULL, 0);
@@
-152,7
+152,7
@@
static void rcu_defer_barrier_queue(struct defer_queue *queue,
*/
for (i = queue->tail; i != head;) {
*/
for (i = queue->tail; i != head;) {
- smp_rmb(); /* read head before q[]. */
+
cmm_
smp_rmb(); /* read head before q[]. */
p = LOAD_SHARED(queue->q[i++ & DEFER_QUEUE_MASK]);
if (unlikely(DQ_IS_FCT_BIT(p))) {
DQ_CLEAR_FCT_BIT(p);
p = LOAD_SHARED(queue->q[i++ & DEFER_QUEUE_MASK]);
if (unlikely(DQ_IS_FCT_BIT(p))) {
DQ_CLEAR_FCT_BIT(p);
@@
-166,7
+166,7
@@
static void rcu_defer_barrier_queue(struct defer_queue *queue,
fct = queue->last_fct_out;
fct(p);
}
fct = queue->last_fct_out;
fct(p);
}
-
smp_mb();
/* push tail after having used q[] */
+
cmm_smp_mb();
/* push tail after having used q[] */
STORE_SHARED(queue->tail, i);
}
STORE_SHARED(queue->tail, i);
}
@@
-283,10
+283,10
@@
void _defer_rcu(void (*fct)(void *p), void *p)
}
}
_STORE_SHARED(defer_queue.q[head++ & DEFER_QUEUE_MASK], p);
}
}
_STORE_SHARED(defer_queue.q[head++ & DEFER_QUEUE_MASK], p);
-
smp_wmb();
/* Publish new pointer before head */
+
cmm_smp_wmb();
/* Publish new pointer before head */
/* Write q[] before head. */
STORE_SHARED(defer_queue.head, head);
/* Write q[] before head. */
STORE_SHARED(defer_queue.head, head);
-
smp_mb();
/* Write queue head before read futex */
+
cmm_smp_mb();
/* Write queue head before read futex */
/*
* Wake-up any waiting defer thread.
*/
/*
* Wake-up any waiting defer thread.
*/
This page took
0.024991 seconds
and
4
git commands to generate.