XenevaOS
Loading...
Searching...
No Matches
dma-fence-chain.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: GPL-2.0-only */
2/*
3 * fence-chain: chain fences together in a timeline
4 *
5 * Copyright (C) 2018 Advanced Micro Devices, Inc.
6 * Authors:
7 * Christian König <christian.koenig@amd.com>
8 */
9
10#ifndef __LINUX_DMA_FENCE_CHAIN_H
11#define __LINUX_DMA_FENCE_CHAIN_H
12
13#include <linux/dma-fence.h>
14#include <linux/irq_work.h>
15#include <linux/slab.h>
16
30 union {
38 struct dma_fence_cb cb;
39
47 struct irq_work work;
48 };
49};
50
51
59static inline struct dma_fence_chain *
60to_dma_fence_chain(struct dma_fence *fence)
61{
62 if (!fence || !dma_fence_is_chain(fence))
63 return NULL;
64
65 return container_of(fence, struct dma_fence_chain, base);
66}
67
75static inline struct dma_fence *
76dma_fence_chain_contained(struct dma_fence *fence)
77{
78 struct dma_fence_chain *chain = to_dma_fence_chain(fence);
79
80 return chain ? chain->fence : fence;
81}
82
92#define dma_fence_chain_alloc() \
93 kmalloc_obj(struct dma_fence_chain)
94
104static inline void dma_fence_chain_free(struct dma_fence_chain *chain)
105{
106 kfree(chain);
107};
108
119#define dma_fence_chain_for_each(iter, head) \
120 for (iter = dma_fence_get(head); iter; \
121 iter = dma_fence_chain_walk(iter))
122
126 struct dma_fence *prev,
127 struct dma_fence *fence,
129
130#endif /* __LINUX_DMA_FENCE_CHAIN_H */
COMPILER_DEPENDENT_UINT64 uint64_t
Definition acefiex.h:165
#define NULL
Definition actypes.h:561
#define __rcu
Definition compiler_types.h:72
#define container_of(ptr, type, member)
Definition container_of.h:19
int dma_fence_chain_find_seqno(struct dma_fence **pfence, uint64_t seqno)
void dma_fence_chain_init(struct dma_fence_chain *chain, struct dma_fence *prev, struct dma_fence *fence, uint64_t seqno)
struct dma_fence * dma_fence_chain_walk(struct dma_fence *fence)
struct i915_user_extension base
Definition i915_drm.h:0
void kfree(void)
uint64_t u64
Definition kernel.h:17
Definition dma-fence.h:127
Definition dma-fence-chain.h:25
u64 prev_seqno
Definition dma-fence-chain.h:28
struct dma_fence base
Definition dma-fence-chain.h:26
struct dma_fence * fence
Definition dma-fence-chain.h:29
struct dma_fence __rcu * prev
Definition dma-fence-chain.h:27
Definition dma-fence.h:70
u64 seqno
Definition dma-fence.h:100
Definition irq_work.h:15