Lines Matching refs:fence
93 typedef void (*dma_fence_func_t)(struct dma_fence *fence,
123 const char * (*get_driver_name)(struct dma_fence *fence);
135 const char * (*get_timeline_name)(struct dma_fence *fence);
172 bool (*enable_signaling)(struct dma_fence *fence);
189 bool (*signaled)(struct dma_fence *fence);
211 signed long (*wait)(struct dma_fence *fence,
222 void (*release)(struct dma_fence *fence);
232 void (*fence_value_str)(struct dma_fence *fence, char *str, int size);
242 void (*timeline_value_str)(struct dma_fence *fence,
246 void dma_fence_init(struct dma_fence *fence, const struct dma_fence_ops *ops,
250 void dma_fence_free(struct dma_fence *fence);
256 static inline void dma_fence_put(struct dma_fence *fence) in dma_fence_put() argument
258 if (fence) in dma_fence_put()
259 kref_put(&fence->refcount, dma_fence_release); in dma_fence_put()
268 static inline struct dma_fence *dma_fence_get(struct dma_fence *fence) in dma_fence_get() argument
270 if (fence) in dma_fence_get()
271 kref_get(&fence->refcount); in dma_fence_get()
272 return fence; in dma_fence_get()
282 static inline struct dma_fence *dma_fence_get_rcu(struct dma_fence *fence) in dma_fence_get_rcu() argument
284 if (kref_get_unless_zero(&fence->refcount)) in dma_fence_get_rcu()
285 return fence; in dma_fence_get_rcu()
310 struct dma_fence *fence; in dma_fence_get_rcu_safe() local
312 fence = rcu_dereference(*fencep); in dma_fence_get_rcu_safe()
313 if (!fence) in dma_fence_get_rcu_safe()
316 if (!dma_fence_get_rcu(fence)) in dma_fence_get_rcu_safe()
333 if (fence == rcu_access_pointer(*fencep)) in dma_fence_get_rcu_safe()
334 return rcu_pointer_handoff(fence); in dma_fence_get_rcu_safe()
336 dma_fence_put(fence); in dma_fence_get_rcu_safe()
340 int dma_fence_signal(struct dma_fence *fence);
341 int dma_fence_signal_locked(struct dma_fence *fence);
342 signed long dma_fence_default_wait(struct dma_fence *fence,
344 int dma_fence_add_callback(struct dma_fence *fence,
347 bool dma_fence_remove_callback(struct dma_fence *fence,
349 void dma_fence_enable_sw_signaling(struct dma_fence *fence);
366 dma_fence_is_signaled_locked(struct dma_fence *fence) in dma_fence_is_signaled_locked() argument
368 if (test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags)) in dma_fence_is_signaled_locked()
371 if (fence->ops->signaled && fence->ops->signaled(fence)) { in dma_fence_is_signaled_locked()
372 dma_fence_signal_locked(fence); in dma_fence_is_signaled_locked()
396 dma_fence_is_signaled(struct dma_fence *fence) in dma_fence_is_signaled() argument
398 if (test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags)) in dma_fence_is_signaled()
401 if (fence->ops->signaled && fence->ops->signaled(fence)) { in dma_fence_is_signaled()
402 dma_fence_signal(fence); in dma_fence_is_signaled()
479 static inline int dma_fence_get_status_locked(struct dma_fence *fence) in dma_fence_get_status_locked() argument
481 if (dma_fence_is_signaled_locked(fence)) in dma_fence_get_status_locked()
482 return fence->error ?: 1; in dma_fence_get_status_locked()
487 int dma_fence_get_status(struct dma_fence *fence);
500 static inline void dma_fence_set_error(struct dma_fence *fence, in dma_fence_set_error() argument
503 WARN_ON(test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags)); in dma_fence_set_error()
506 fence->error = error; in dma_fence_set_error()
531 static inline signed long dma_fence_wait(struct dma_fence *fence, bool intr) in dma_fence_wait() argument
539 ret = dma_fence_wait_timeout(fence, intr, MAX_SCHEDULE_TIMEOUT); in dma_fence_wait()