From 3df2df75972d2ccaa1a1fa01bad06b0eda7f76f2 Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Wed, 30 Sep 2009 10:15:36 -0400 Subject: [PATCH] urcu-ht: rename "stolen" to "flags" Signed-off-by: Mathieu Desnoyers --- urcu-ht.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/urcu-ht.c b/urcu-ht.c index 183fcb1..7213c39 100644 --- a/urcu-ht.c +++ b/urcu-ht.c @@ -17,13 +17,16 @@ #include #include +/* node flags */ +#define NODE_STOLEN (1 << 0) + struct rcu_ht_node; struct rcu_ht_node { struct rcu_ht_node *next; void *key; void *data; - int stolen; + unsigned int flags; }; struct rcu_ht { @@ -95,7 +98,7 @@ int ht_add(struct rcu_ht *ht, void *key, void *data) new_head = calloc(1, sizeof(struct rcu_ht_node)); new_head->key = key; new_head->data = data; - new_head->stolen = 0; + new_head->flags = 0; /* here comes the fun and tricky part. * Add at the beginning with a cmpxchg. * Hold a read lock between the moment the first element is read @@ -177,9 +180,10 @@ retry: if (!del_node) { /* * Another concurrent thread stole it ? If so, let it deal with - * this. + * this. Assume NODE_STOLEN is the only flag. If this changes, + * read flags before cmpxchg. */ - if (cmpxchg(&node->stolen, 0, 1) != 0) + if (cmpxchg(&node->flags, 0, NODE_STOLEN) != 0) goto error; } -- 2.34.1