Lines Matching refs:cb
589 * @cb: the callback to register
592 * @cb will be initialized by dma_fence_add_callback(), no initialization
610 int dma_fence_add_callback(struct dma_fence *fence, struct dma_fence_cb *cb, dma_fence_func_t func)
620 INIT_LIST_HEAD(&cb->node);
627 cb->func = func;
628 list_add_tail(&cb->node, &fence->cb_list);
630 INIT_LIST_HEAD(&cb->node);
668 * @cb: the callback to remove
680 * Behaviour is undefined if @cb has not been added to @fence using
683 bool dma_fence_remove_callback(struct dma_fence *fence, struct dma_fence_cb *cb)
690 ret = !list_empty(&cb->node);
692 list_del_init(&cb->node);
706 static void dma_fence_default_wait_cb(struct dma_fence *fence, struct dma_fence_cb *cb)
708 struct default_wait_cb *wait = container_of(cb, struct default_wait_cb, base);
727 struct default_wait_cb cb;
751 cb.base.func = dma_fence_default_wait_cb;
752 cb.task = current;
753 list_add(&cb.base.node, &fence->cb_list);
771 if (!list_empty(&cb.base.node)) {
772 list_del(&cb.base.node);
821 struct default_wait_cb *cb;
839 cb = kcalloc(count, sizeof(struct default_wait_cb), GFP_KERNEL);
840 if (cb == NULL) {
847 cb[i].task = current;
848 if (dma_fence_add_callback(fence, &cb[i].base, dma_fence_default_wait_cb)) {
875 dma_fence_remove_callback(fences[i], &cb[i].base);
878 kfree(cb);