Home | History | Annotate | Download | only in util

Lines Matching refs:fence

59 /* Job completion fence.
63 /* The fence can be in one of three states:
72 util_queue_fence_init(struct util_queue_fence *fence)
74 fence->val = 0;
78 util_queue_fence_destroy(struct util_queue_fence *fence)
80 assert(fence->val == 0);
85 util_queue_fence_signal(struct util_queue_fence *fence)
87 uint32_t val = p_atomic_xchg(&fence->val, 0);
92 futex_wake(&fence->val, INT_MAX);
96 * Move \p fence back into unsignalled state.
99 * waiting (or about to wait) on the fence.
102 util_queue_fence_reset(struct util_queue_fence *fence)
105 fence->val = 1;
107 uint32_t v = p_atomic_xchg(&fence->val, 1);
113 util_queue_fence_is_signalled(struct util_queue_fence *fence)
115 return fence->val == 0;
120 /* Job completion fence.
129 void util_queue_fence_init(struct util_queue_fence *fence);
130 void util_queue_fence_destroy(struct util_queue_fence *fence);
131 void util_queue_fence_signal(struct util_queue_fence *fence);
134 * Move \p fence back into unsignalled state.
137 * waiting (or about to wait) on the fence.
140 util_queue_fence_reset(struct util_queue_fence *fence)
142 assert(fence->signalled);
143 fence->signalled = 0;
147 util_queue_fence_is_signalled(struct util_queue_fence *fence)
149 return fence->signalled != 0;
154 _util_queue_fence_wait(struct util_queue_fence *fence);
157 util_queue_fence_wait(struct util_queue_fence *fence)
159 if (unlikely(!util_queue_fence_is_signalled(fence)))
160 _util_queue_fence_wait(fence);
164 _util_queue_fence_wait_timeout(struct util_queue_fence *fence,
168 * Wait for the fence to be signaled with a timeout.
170 * \param fence the fence
174 * \return true if the fence was signaled, false if the timeout occurred.
177 util_queue_fence_wait_timeout(struct util_queue_fence *fence,
180 if (util_queue_fence_is_signalled(fence))
184 _util_queue_fence_wait(fence);
188 return _util_queue_fence_wait_timeout(fence, abs_timeout);
195 struct util_queue_fence *fence;
227 /* optional cleanup callback is called after fence is signaled: */
230 struct util_queue_fence *fence,
234 struct util_queue_fence *fence);