projects
/
urcu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
workqueue/waitqueue: use lock-free stack for wakeup
[urcu.git]
/
urcu
/
waitqueue-lifo.h
diff --git
a/urcu/waitqueue-lifo.h
b/urcu/waitqueue-lifo.h
index 2ccf6300ca0ccd8576daecde56a43011d971c91e..fccba17844001cdd6f678ff9ad7bfb406b72465c 100644
(file)
--- a/
urcu/waitqueue-lifo.h
+++ b/
urcu/waitqueue-lifo.h
@@
-24,7
+24,7
@@
*/
#include <urcu/uatomic.h>
*/
#include <urcu/uatomic.h>
-#include <urcu/
w
fstack.h>
+#include <urcu/
l
fstack.h>
#include <urcu/futex.h>
/*
#include <urcu/futex.h>
/*
@@
-43,7
+43,7
@@
enum urcu_wait_state {
};
struct urcu_wait_node {
};
struct urcu_wait_node {
- struct cds_
w
fs_node node;
+ struct cds_
l
fs_node node;
int32_t state; /* enum urcu_wait_state */
};
int32_t state; /* enum urcu_wait_state */
};
@@
-57,11
+57,11
@@
struct urcu_wait_node {
struct urcu_wait_node name
struct urcu_wait_queue {
struct urcu_wait_node name
struct urcu_wait_queue {
- struct __cds_
w
fs_stack stack;
+ struct __cds_
l
fs_stack stack;
};
#define URCU_WAIT_QUEUE_HEAD_INIT(name) \
};
#define URCU_WAIT_QUEUE_HEAD_INIT(name) \
- { .stack.head = CDS_
W
FS_END, }
+ { .stack.head = CDS_
L
FS_END, }
#define DECLARE_URCU_WAIT_QUEUE(name) \
struct urcu_wait_queue name
#define DECLARE_URCU_WAIT_QUEUE(name) \
struct urcu_wait_queue name
@@
-72,11
+72,11
@@
struct urcu_wait_queue {
static inline
void urcu_wait_queue_init(struct urcu_wait_queue *queue)
{
static inline
void urcu_wait_queue_init(struct urcu_wait_queue *queue)
{
- __cds_
w
fs_init(&queue->stack);
+ __cds_
l
fs_init(&queue->stack);
}
struct urcu_waiters {
}
struct urcu_waiters {
- struct cds_
w
fs_head *head;
+ struct cds_
l
fs_head *head;
};
/*
};
/*
@@
-88,7
+88,7
@@
static inline
bool urcu_wait_add(struct urcu_wait_queue *queue,
struct urcu_wait_node *node)
{
bool urcu_wait_add(struct urcu_wait_queue *queue,
struct urcu_wait_node *node)
{
- return cds_
w
fs_push(&queue->stack, &node->node);
+ return cds_
l
fs_push(&queue->stack, &node->node);
}
/*
}
/*
@@
-99,7
+99,7
@@
static inline
void urcu_move_waiters(struct urcu_waiters *waiters,
struct urcu_wait_queue *queue)
{
void urcu_move_waiters(struct urcu_waiters *waiters,
struct urcu_wait_queue *queue)
{
- waiters->head = __cds_
w
fs_pop_all(&queue->stack);
+ waiters->head = __cds_
l
fs_pop_all(&queue->stack);
}
static inline
}
static inline
@@
-121,7
+121,7
@@
void urcu_wait_node_init(struct urcu_wait_node *node,
enum urcu_wait_state state)
{
urcu_wait_set_state(node, state);
enum urcu_wait_state state)
{
urcu_wait_set_state(node, state);
- cds_
w
fs_node_init(&node->node);
+ cds_
l
fs_node_init(&node->node);
}
/*
}
/*
@@
-198,11
+198,11
@@
skip_futex_wait:
static inline
int urcu_dequeue_wake_single(struct urcu_wait_queue *queue)
{
static inline
int urcu_dequeue_wake_single(struct urcu_wait_queue *queue)
{
- struct cds_
w
fs_node *node;
+ struct cds_
l
fs_node *node;
struct urcu_wait_node *wait_node;
int ret = 0;
struct urcu_wait_node *wait_node;
int ret = 0;
- node = __cds_
wfs_pop_blocking
(&queue->stack);
+ node = __cds_
lfs_pop
(&queue->stack);
if (!node)
return -ENOENT;
wait_node = caa_container_of(node, struct urcu_wait_node, node);
if (!node)
return -ENOENT;
wait_node = caa_container_of(node, struct urcu_wait_node, node);
@@
-239,11
+239,11
@@
int urcu_dequeue_wake_n(struct urcu_wait_queue *queue, int n)
static inline
int urcu_wake_all_waiters(struct urcu_waiters *waiters)
{
static inline
int urcu_wake_all_waiters(struct urcu_waiters *waiters)
{
- struct cds_
w
fs_node *iter, *iter_n;
+ struct cds_
l
fs_node *iter, *iter_n;
int nr_wakeup = 0;
/* Wake all waiters in our stack head */
int nr_wakeup = 0;
/* Wake all waiters in our stack head */
- cds_
wfs_for_each_blocking
_safe(waiters->head, iter, iter_n) {
+ cds_
lfs_for_each
_safe(waiters->head, iter, iter_n) {
struct urcu_wait_node *wait_node =
caa_container_of(iter, struct urcu_wait_node, node);
struct urcu_wait_node *wait_node =
caa_container_of(iter, struct urcu_wait_node, node);
This page took
0.030531 seconds
and
4
git commands to generate.