projects
/
userspace-rcu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
workqueue: steal all: only steal from workers when steal flag is set
[userspace-rcu.git]
/
urcu
/
rculist.h
diff --git
a/urcu/rculist.h
b/urcu/rculist.h
index ab88226b5f73d9ffff856ff347aefb3757c6a53f..9a01dad2c8930f882763585d9ffc8f3c71e8d307 100644
(file)
--- a/
urcu/rculist.h
+++ b/
urcu/rculist.h
@@
-35,9
+35,8
@@
void cds_list_add_rcu(struct cds_list_head *newp, struct cds_list_head *head)
{
newp->next = head->next;
newp->prev = head;
{
newp->next = head->next;
newp->prev = head;
- cmm_smp_wmb();
- head->next->prev = newp;
- head->next = newp;
+ rcu_assign_pointer(head->next->prev, newp);
+ CMM_STORE_SHARED(head->next, newp);
}
/* Add new element at the tail of the list. */
}
/* Add new element at the tail of the list. */
@@
-48,7
+47,7
@@
void cds_list_add_tail_rcu(struct cds_list_head *newp,
newp->next = head;
newp->prev = head->prev;
rcu_assign_pointer(head->prev->next, newp);
newp->next = head;
newp->prev = head->prev;
rcu_assign_pointer(head->prev->next, newp);
-
head->prev = newp
;
+
CMM_STORE_SHARED(head->prev, newp)
;
}
/*
}
/*
@@
-62,15
+61,15
@@
void cds_list_replace_rcu(struct cds_list_head *old, struct cds_list_head *_new)
_new->next = old->next;
_new->prev = old->prev;
rcu_assign_pointer(_new->prev->next, _new);
_new->next = old->next;
_new->prev = old->prev;
rcu_assign_pointer(_new->prev->next, _new);
-
_new->next->prev = _new
;
+
CMM_STORE_SHARED(_new->next->prev, _new)
;
}
/* Remove element from list. */
static inline
void cds_list_del_rcu(struct cds_list_head *elem)
{
}
/* Remove element from list. */
static inline
void cds_list_del_rcu(struct cds_list_head *elem)
{
-
elem->next->prev = elem->prev
;
-
elem->prev->next = elem->next
;
+
CMM_STORE_SHARED(elem->next->prev, elem->prev)
;
+
CMM_STORE_SHARED(elem->prev->next, elem->next)
;
}
/*
}
/*
This page took
0.025236 seconds
and
4
git commands to generate.