Lines Matching refs:fence
105 typedef void (*dma_fence_func_t)(struct dma_fence *fence,
143 const char * (*get_driver_name)(struct dma_fence *fence);
155 const char * (*get_timeline_name)(struct dma_fence *fence);
192 bool (*enable_signaling)(struct dma_fence *fence);
209 bool (*signaled)(struct dma_fence *fence);
231 signed long (*wait)(struct dma_fence *fence,
242 void (*release)(struct dma_fence *fence);
252 void (*fence_value_str)(struct dma_fence *fence, char *str, int size);
262 void (*timeline_value_str)(struct dma_fence *fence,
266 void dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
270 void dma_fence_free(struct dma_fence *fence);
276 static inline void dma_fence_put(struct dma_fence *fence) in dma_fence_put() argument
278 if (fence) in dma_fence_put()
279 kref_put(&fence->refcount, dma_fence_release); in dma_fence_put()
288 static inline struct dma_fence *dma_fence_get(struct dma_fence *fence) in dma_fence_get() argument
290 if (fence) in dma_fence_get()
291 kref_get(&fence->refcount); in dma_fence_get()
292 return fence; in dma_fence_get()
302 static inline struct dma_fence *dma_fence_get_rcu(struct dma_fence *fence) in dma_fence_get_rcu() argument
304 if (kref_get_unless_zero(&fence->refcount)) in dma_fence_get_rcu()
305 return fence; in dma_fence_get_rcu()
330 struct dma_fence *fence; in dma_fence_get_rcu_safe() local
332 fence = rcu_dereference(*fencep); in dma_fence_get_rcu_safe()
333 if (!fence) in dma_fence_get_rcu_safe()
336 if (!dma_fence_get_rcu(fence)) in dma_fence_get_rcu_safe()
353 if (fence == rcu_access_pointer(*fencep)) in dma_fence_get_rcu_safe()
354 return rcu_pointer_handoff(fence); in dma_fence_get_rcu_safe()
356 dma_fence_put(fence); in dma_fence_get_rcu_safe()
360 int dma_fence_signal(struct dma_fence *fence);
361 int dma_fence_signal_locked(struct dma_fence *fence);
362 signed long dma_fence_default_wait(struct dma_fence *fence,
364 int dma_fence_add_callback(struct dma_fence *fence,
367 bool dma_fence_remove_callback(struct dma_fence *fence,
369 void dma_fence_enable_sw_signaling(struct dma_fence *fence);
386 dma_fence_is_signaled_locked(struct dma_fence *fence) in dma_fence_is_signaled_locked() argument
388 if (test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags)) in dma_fence_is_signaled_locked()
391 if (fence->ops->signaled && fence->ops->signaled(fence)) { in dma_fence_is_signaled_locked()
392 dma_fence_signal_locked(fence); in dma_fence_is_signaled_locked()
416 dma_fence_is_signaled(struct dma_fence *fence) in dma_fence_is_signaled() argument
418 if (test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags)) in dma_fence_is_signaled()
421 if (fence->ops->signaled && fence->ops->signaled(fence)) { in dma_fence_is_signaled()
422 dma_fence_signal(fence); in dma_fence_is_signaled()
508 static inline int dma_fence_get_status_locked(struct dma_fence *fence) in dma_fence_get_status_locked() argument
510 if (dma_fence_is_signaled_locked(fence)) in dma_fence_get_status_locked()
511 return fence->error ?: 1; in dma_fence_get_status_locked()
516 int dma_fence_get_status(struct dma_fence *fence);
529 static inline void dma_fence_set_error(struct dma_fence *fence, in dma_fence_set_error() argument
532 WARN_ON(test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags)); in dma_fence_set_error()
535 fence->error = error; in dma_fence_set_error()
560 static inline signed long dma_fence_wait(struct dma_fence *fence, bool intr) in dma_fence_wait() argument
568 ret = dma_fence_wait_timeout(fence, intr, MAX_SCHEDULE_TIMEOUT); in dma_fence_wait()