| /* SPDX-License-Identifier: GPL-2.0-only */ |
| /* |
| * lib_sw_fence.h - library routines for testing N:M synchronisation points |
| * |
| * Copyright (C) 2017 Intel Corporation |
| */ |
| |
| #ifndef _LIB_SW_FENCE_H_ |
| #define _LIB_SW_FENCE_H_ |
| |
| #include <linux/timer.h> |
| |
| #include "../i915_sw_fence.h" |
| |
| #ifdef CONFIG_LOCKDEP |
| #define onstack_fence_init(fence) \ |
| do { \ |
| static struct lock_class_key __key; \ |
| \ |
| __onstack_fence_init((fence), #fence, &__key); \ |
| } while (0) |
| #else |
| #define onstack_fence_init(fence) \ |
| __onstack_fence_init((fence), NULL, NULL) |
| #endif |
| |
| void __onstack_fence_init(struct i915_sw_fence *fence, |
| const char *name, |
| struct lock_class_key *key); |
| void onstack_fence_fini(struct i915_sw_fence *fence); |
| |
| struct timed_fence { |
| struct i915_sw_fence fence; |
| struct timer_list timer; |
| }; |
| |
| void timed_fence_init(struct timed_fence *tf, unsigned long expires); |
| void timed_fence_fini(struct timed_fence *tf); |
| |
| struct i915_sw_fence *heap_fence_create(gfp_t gfp); |
| void heap_fence_put(struct i915_sw_fence *fence); |
| |
| #endif /* _LIB_SW_FENCE_H_ */ |