Lines Matching refs:fence
62 /* Job completion fence.
66 /* The fence can be in one of three states:
75 util_queue_fence_init(struct util_queue_fence *fence)
77 fence->val = 0;
81 util_queue_fence_destroy(struct util_queue_fence *fence)
83 assert(p_atomic_read_relaxed(&fence->val) == 0);
88 util_queue_fence_signal(struct util_queue_fence *fence)
90 uint32_t val = p_atomic_xchg(&fence->val, 0);
95 futex_wake(&fence->val, INT_MAX);
99 * Move \p fence back into unsignalled state.
102 * waiting (or about to wait) on the fence.
105 util_queue_fence_reset(struct util_queue_fence *fence)
108 fence->val = 1;
110 uint32_t v = p_atomic_xchg(&fence->val, 1);
116 util_queue_fence_is_signalled(struct util_queue_fence *fence)
118 return p_atomic_read_relaxed(&fence->val) == 0;
123 /* Job completion fence.
132 void util_queue_fence_init(struct util_queue_fence *fence);
133 void util_queue_fence_destroy(struct util_queue_fence *fence);
134 void util_queue_fence_signal(struct util_queue_fence *fence);
137 * Move \p fence back into unsignalled state.
140 * waiting (or about to wait) on the fence.
143 util_queue_fence_reset(struct util_queue_fence *fence)
145 assert(fence->signalled);
146 fence->signalled = 0;
150 util_queue_fence_is_signalled(struct util_queue_fence *fence)
152 return fence->signalled != 0;
157 _util_queue_fence_wait(struct util_queue_fence *fence);
160 util_queue_fence_wait(struct util_queue_fence *fence)
162 if (unlikely(!util_queue_fence_is_signalled(fence)))
163 _util_queue_fence_wait(fence);
167 _util_queue_fence_wait_timeout(struct util_queue_fence *fence,
171 * Wait for the fence to be signaled with a timeout.
173 * \param fence the fence
177 * \return true if the fence was signaled, false if the timeout occurred.
180 util_queue_fence_wait_timeout(struct util_queue_fence *fence,
183 if (util_queue_fence_is_signalled(fence))
187 _util_queue_fence_wait(fence);
191 return _util_queue_fence_wait_timeout(fence, abs_timeout);
200 struct util_queue_fence *fence;
235 /* optional cleanup callback is called after fence is signaled: */
238 struct util_queue_fence *fence,
243 struct util_queue_fence *fence);