lib_sw_fence.h 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * lib_sw_fence.h - library routines for testing N:M synchronisation points
  4. *
  5. * Copyright (C) 2017 Intel Corporation
  6. */
  7. #ifndef _LIB_SW_FENCE_H_
  8. #define _LIB_SW_FENCE_H_
  9. #include <linux/timer.h>
  10. #include "../i915_sw_fence.h"
  11. #ifdef CONFIG_LOCKDEP
  12. #define onstack_fence_init(fence) \
  13. do { \
  14. static struct lock_class_key __key; \
  15. \
  16. __onstack_fence_init((fence), #fence, &__key); \
  17. } while (0)
  18. #else
  19. #define onstack_fence_init(fence) \
  20. __onstack_fence_init((fence), NULL, NULL)
  21. #endif
  22. void __onstack_fence_init(struct i915_sw_fence *fence,
  23. const char *name,
  24. struct lock_class_key *key);
  25. void onstack_fence_fini(struct i915_sw_fence *fence);
  26. struct timed_fence {
  27. struct i915_sw_fence fence;
  28. struct timer_list timer;
  29. };
  30. void timed_fence_init(struct timed_fence *tf, unsigned long expires);
  31. void timed_fence_fini(struct timed_fence *tf);
  32. struct i915_sw_fence *heap_fence_create(gfp_t gfp);
  33. void heap_fence_put(struct i915_sw_fence *fence);
  34. #endif /* _LIB_SW_FENCE_H_ */