summaryrefslogtreecommitdiffstats
path: root/src/util/u_queue.c
diff options
context:
space:
mode:
authorNicolai Hähnle <[email protected]>2017-10-22 17:38:31 +0200
committerNicolai Hähnle <[email protected]>2017-11-09 11:37:39 +0100
commitd1ff0826370cb1cfbcf741c8eb35caf1fddd7d52 (patch)
tree26f2e7b1c5f19cb9092fddfc1ce94797c7b9ce4a /src/util/u_queue.c
parent574c59d4f935cccfa18f7054c660200f8be791ad (diff)
u_queue: add a futex-based implementation of fences
Fences are now 4 bytes instead of 96 bytes (on my 64-bit system). Signaling a fence is a single atomic operation in the fast case plus a syscall in the slow case. Testing if a fence is signaled is the same as before (a simple comparison), but waiting on a fence is now no more expensive than just testing it in the fast (already signaled) case. v2: - style fixes - use p_atomic_xxx macros with the right barriers Acked-by: Marek Olšák <[email protected]>
Diffstat (limited to 'src/util/u_queue.c')
-rw-r--r--src/util/u_queue.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/util/u_queue.c b/src/util/u_queue.c
index 2272006042f..8293ec661b0 100644
--- a/src/util/u_queue.c
+++ b/src/util/u_queue.c
@@ -89,6 +89,7 @@ remove_from_atexit_list(struct util_queue *queue)
* util_queue_fence
*/
+#ifdef UTIL_QUEUE_FENCE_STANDARD
void
util_queue_fence_signal(struct util_queue_fence *fence)
{
@@ -136,6 +137,7 @@ util_queue_fence_destroy(struct util_queue_fence *fence)
cnd_destroy(&fence->cond);
mtx_destroy(&fence->mutex);
}
+#endif
/****************************************************************************
* util_queue implementation