Lines Matching defs:obj

136  * @obj: the reservation object
138 void dma_resv_init(struct dma_resv *obj)
140 ww_mutex_init(&obj->lock, &reservation_ww_class);
142 RCU_INIT_POINTER(obj->fences, NULL);
148 * @obj: the reservation object
150 void dma_resv_fini(struct dma_resv *obj)
156 dma_resv_list_free(rcu_dereference_protected(obj->fences, true));
157 ww_mutex_destroy(&obj->lock);
162 static inline struct dma_resv_list *dma_resv_fences_list(struct dma_resv *obj)
164 return rcu_dereference_check(obj->fences, dma_resv_held(obj));
169 * @obj: reservation object
172 * Should be called before dma_resv_add_fence(). Must be called with @obj
175 * Note that the preallocated slots need to be re-reserved if @obj is unlocked
182 int dma_resv_reserve_fences(struct dma_resv *obj, unsigned int num_fences)
187 dma_resv_assert_held(obj);
189 old = dma_resv_fences_list(obj);
212 dma_resv_list_entry(old, i, obj, &fence, &usage);
228 rcu_assign_pointer(obj->fences, new);
238 dma_resv_held(obj));
250 * @obj: the dma_resv object to reset
256 void dma_resv_reset_max_fences(struct dma_resv *obj)
258 struct dma_resv_list *fences = dma_resv_fences_list(obj);
260 dma_resv_assert_held(obj);
270 * dma_resv_add_fence - Add a fence to the dma_resv obj
271 * @obj: the reservation object
275 * Add a fence to a slot, @obj must be locked with dma_resv_lock(), and
280 void dma_resv_add_fence(struct dma_resv *obj, struct dma_fence *fence,
289 dma_resv_assert_held(obj);
296 fobj = dma_resv_fences_list(obj);
302 dma_resv_list_entry(fobj, i, obj, &old, &old_usage);
322 * dma_resv_replace_fences - replace fences in the dma_resv obj
323 * @obj: the reservation object
335 void dma_resv_replace_fences(struct dma_resv *obj, uint64_t context,
342 dma_resv_assert_held(obj);
344 list = dma_resv_fences_list(obj);
348 dma_resv_list_entry(list, i, obj, &old, NULL);
363 cursor->fences = dma_resv_fences_list(cursor->obj);
386 cursor->obj, &cursor->fence,
401 * dma_resv_iter_first_unlocked - first fence in an unlocked dma_resv obj.
410 * Returns the first fence from an unlocked dma_resv obj.
418 } while (dma_resv_fences_list(cursor->obj) != cursor->fences);
426 * dma_resv_iter_next_unlocked - next fence in an unlocked dma_resv obj.
433 * Returns the next fence from an unlocked dma_resv obj.
441 restart = dma_resv_fences_list(cursor->obj) != cursor->fences;
447 } while (dma_resv_fences_list(cursor->obj) != cursor->fences);
467 dma_resv_assert_held(cursor->obj);
470 cursor->fences = dma_resv_fences_list(cursor->obj);
489 dma_resv_assert_held(cursor->obj);
499 cursor->obj, &fence, &cursor->fence_usage);
552 * @obj: the reservation object
561 int dma_resv_get_fences(struct dma_resv *obj, enum dma_resv_usage usage,
570 dma_resv_iter_begin(&cursor, obj, usage);
606 * @obj: the reservation object
619 int dma_resv_get_singleton(struct dma_resv *obj, enum dma_resv_usage usage,
627 r = dma_resv_get_fences(obj, usage, &count, &fences);
659 * @obj: the reservation object
670 long dma_resv_wait_timeout(struct dma_resv *obj, enum dma_resv_usage usage,
677 dma_resv_iter_begin(&cursor, obj, usage);
694 * @obj: the reservation object
701 void dma_resv_set_deadline(struct dma_resv *obj, enum dma_resv_usage usage,
707 dma_resv_iter_begin(&cursor, obj, usage);
718 * @obj: the reservation object
728 bool dma_resv_test_signaled(struct dma_resv *obj, enum dma_resv_usage usage)
733 dma_resv_iter_begin(&cursor, obj, usage);
745 * @obj: the reservation object
751 void dma_resv_describe(struct dma_resv *obj, struct seq_file *seq)
757 dma_resv_for_each_fence(&cursor, obj, DMA_RESV_USAGE_READ, fence) {
770 struct dma_resv obj;
777 dma_resv_init(&obj);
782 ret = dma_resv_lock(&obj, &ctx);
784 dma_resv_lock_slow(&obj, &ctx);
797 ww_mutex_unlock(&obj.lock);