#include <linux/dma-fence.h>
#include <linux/interval_tree_generic.h>
#include <linux/slab.h>
#include "xe_macros.h"
#include "xe_range_fence.h"
#define XE_RANGE_TREE_START(_node) …
#define XE_RANGE_TREE_LAST(_node) …
INTERVAL_TREE_DEFINE(struct xe_range_fence, rb, u64, __subtree_last,
XE_RANGE_TREE_START, XE_RANGE_TREE_LAST, static,
xe_range_fence_tree);
static void
xe_range_fence_signal_notify(struct dma_fence *fence, struct dma_fence_cb *cb)
{ … }
static bool __xe_range_fence_tree_cleanup(struct xe_range_fence_tree *tree)
{ … }
int xe_range_fence_insert(struct xe_range_fence_tree *tree,
struct xe_range_fence *rfence,
const struct xe_range_fence_ops *ops,
u64 start, u64 last, struct dma_fence *fence)
{ … }
static void xe_range_fence_tree_remove_all(struct xe_range_fence_tree *tree)
{ … }
void xe_range_fence_tree_init(struct xe_range_fence_tree *tree)
{ … }
void xe_range_fence_tree_fini(struct xe_range_fence_tree *tree)
{ … }
struct xe_range_fence *
xe_range_fence_tree_first(struct xe_range_fence_tree *tree, u64 start,
u64 last)
{ … }
struct xe_range_fence *
xe_range_fence_tree_next(struct xe_range_fence *rfence, u64 start, u64 last)
{ … }
static void xe_range_fence_free(struct xe_range_fence *rfence)
{ … }
const struct xe_range_fence_ops xe_range_fence_kfree_ops = …;