}
/*
- * cds_lfs_init: initialize lock-free stack.
+ * cds_lfs_init: initialize lock-free stack (with lock). Pair with
+ * cds_lfs_destroy().
*/
static inline
void _cds_lfs_init(struct cds_lfs_stack *s)
assert(!ret);
}
+/*
+ * cds_lfs_destroy: destroy lock-free stack (with lock). Pair with
+ * cds_lfs_init().
+ */
+static inline
+void _cds_lfs_destroy(struct cds_lfs_stack *s)
+{
+ int ret = pthread_mutex_destroy(&s->lock);
+ assert(!ret);
+}
+
static inline
bool ___cds_lfs_empty_head(struct cds_lfs_head *head)
{
* always performing an exclusive cacheline access, rather than doing
* non-exclusive followed by exclusive cacheline access (which would be
* required if we first read the old head value). This design decision
- * might be revisited after more throrough benchmarking on various
+ * might be revisited after more thorough benchmarking on various
* platforms.
*
* Returns 0 if the stack was empty prior to adding the node.
if (old_head == head)
break;
}
- return ___cds_lfs_empty_head(head);
+ return !___cds_lfs_empty_head(head);
}
/*