#include <linux/delay.h>
#include <linux/dma-fence.h>
#include <linux/kernel.h>
#include <linux/kthread.h>
#include <linux/sched/signal.h>
#include <linux/slab.h>
#include <linux/spinlock.h>
#include "selftest.h"
static struct kmem_cache *slab_fences;
static struct mock_fence { … }
static const char *mock_name(struct dma_fence *f)
{ … }
static void mock_fence_release(struct dma_fence *f)
{ … }
struct wait_cb { … };
static void mock_wakeup(struct dma_fence *f, struct dma_fence_cb *cb)
{ … }
static long mock_wait(struct dma_fence *f, bool intr, long timeout)
{ … }
static const struct dma_fence_ops mock_ops = …;
static struct dma_fence *mock_fence(void)
{ … }
static int sanitycheck(void *arg)
{ … }
static int test_signaling(void *arg)
{ … }
struct simple_cb { … };
static void simple_callback(struct dma_fence *f, struct dma_fence_cb *cb)
{ … }
static int test_add_callback(void *arg)
{ … }
static int test_late_add_callback(void *arg)
{ … }
static int test_rm_callback(void *arg)
{ … }
static int test_late_rm_callback(void *arg)
{ … }
static int test_status(void *arg)
{ … }
static int test_error(void *arg)
{ … }
static int test_wait(void *arg)
{ … }
struct wait_timer { … };
static void wait_timer(struct timer_list *timer)
{ … }
static int test_wait_timeout(void *arg)
{ … }
static int test_stub(void *arg)
{ … }
struct race_thread { … };
static void __wait_for_callbacks(struct dma_fence *f)
{ … }
static int thread_signal_callback(void *arg)
{ … }
static int race_signal_callback(void *arg)
{ … }
int dma_fence(void)
{ … }